В моем javascript есть следующий код:
ajaxCall() {
return new Promise(function(resolve, reject) {
jQuery.ajax({
async: true
data: {
ajaxCallid: "e4f7b812-579b-a347-11f7-ce660ce79b72",
javascript: true
},
dataType: "jsonp",
timeout: 10000,
type: "GET",
url: "https://my.site.url.com/my.json"
xhrFields: {
withCredentials: true
}
}).done(function(data) {
// ...process the data...
resolve(data);
}).fail(function(jqXHR, textStatus) {
// ... process errors...
// test the nature of the error, and build an error = {} object
resolve(error);
});
};
}
Я ожидаю, что если я вызову следующую функцию, а файл https://my.site.url.com/my.json
не существует, то * Должен быть выполнен обратный вызов 1005 * jquery ajax, и мое Обещание должно разрешиться в объект error
, созданный обратным вызовом fail
.
Вместо этого срабатывает обратный вызов fail
объект error
создается и возвращается, но я также получаю сообщение об ошибке в консоли, отправленное jQuery, которое выглядит примерно так:
SyntaxError: ожидаемое выражение, получено '< '
jQuery 6
DOMEval
globalEval
текстовый скрипт
ajaxConvert
done
callback
Мне кажется, несмотря на то, что выдается ошибка, jQuery пытается проанализировать результат, отправленный сервером, как результат JSON (а это не так, если файл не существует, apache выдает html сообщение об ошибке в этом случае).
Если я правильно понял характер этой ошибки, есть ли способ ll jQuery, чтобы не пытаться анализировать результат как json, если возникает какая-либо ошибка и вызывается обратный вызов fail
?
Я использую jquery 3.4.1
.