#jquery #ajax
#jquery #ajax
Вопрос:
Я использую jquery each и проверяю, существует ли файл с помощью вызова ajax. Пожалуйста, взгляните на код.
$(".documentLbl").each(function(){
var actionUrl = $("input", this).val(); // url will be like - http://<<IP>>:<<PORT>>/.../fullTextURL/pdf";
if(actionUrl != null){
$.ajax({
type: 'head',
url: actionUrl,
data: {},
async: false,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function() {
alert("..success..");
},
error: function(xhr, textStatus, errorThrown) {
if (textStatus !== null) {
alert("error: " textStatus);
} else if (errorThrown !== null) {
alert("exception: " errorThrown.message);
}
else {
alert ("error");
}
}
});
}
});
Я могу получить доступ к URL-адресу json при передаче в браузере, получая файл json, но здесь возникает ошибка при использовании jquery ajax как: «Ошибка сети: ошибка внутреннего сервера 500 ….»
Пожалуйста, помогите,
Заранее спасибо…
Отредактировано: я пропустил, чтобы убедиться, что я использую JSON. Обновлено в соответствии с запросом
Комментарии:
1. Если ошибка сети, перейдите к ошибке
2. Вы пытаетесь выполнить вызов AJAX для внешнего URL? Если это так, это никогда не сработает: en.wikipedia.org/wiki/Same_origin_policy
3. Кроме того, тип данных: ‘script’, работал, но не смог обработать, содержит ли URL какие-либо неопознанные данные.
4. хост также должен точно соответствовать
5. Вы не можете отправить запрос ajax на внешний URL-адрес, если только вы не отправляете запрос на данные JSONP.
Ответ №1:
Я не уверен, решит ли это какую-либо из проблем, но я не думаю, что «HEAD» является допустимым параметром для параметра типа ajax. В документации указано «ОПУБЛИКОВАТЬ» или «ПОЛУЧИТЬ» в качестве допустимых параметров.
Комментарии:
1. также пробовал с помощью ‘post’ или ‘get’. с типом данных: script теперь я получаю успех, если действительный URL, но если недопустимый URL, то ошибка не блокируется
Ответ №2:
Вместо того, чтобы использовать ошибку в конце вашего вызова Ajax, попробуйте это:
$("#someDivId").ajaxComplete(function(request, settings){
if (settings.status===404){
alert("Sad! It's not available.");
}
});
Или этот:
$.ajax({
...,
statusCode: {
404: function() {
alert('page not found');
}
}
});
Комментарии:
1. Теперь лучшее улучшение моего кода, но всегда мои «настройки.статус» равен «200». Даже если URL не удается также получить ‘200’