jquery ajax 响应错误不起作用



我有一个对API的Ajax调用,当URL和参数正常时,它将正确返回(200(。现在我正在尝试通过错误的请求强制错误。控制台会通知我错误代码 400,但似乎从未进入错误方法。相反,它卡在某个jquery行中并且永远不会返回。

fetch: function(successCallback, errorCallback) {
var apiUrl = this.applyFilter(filters);
var self = this;
this.log('fetch', apiUrl, currentSearchMode);
$.ajax({
url: apiUrl,
type: 'GET',
cache: (debug) ? true: false,
processData: true,
crossDomain: true,
scriptCharset: 'UTF-8',
jsonp: 'callback',
dataType: 'jsonp',
success: function(data, statusText, jqXHR) {
console.log(jqXHR);
// if(jqXHR.status == 400){
//     console.log('there is an error');
// }
self.log('fetch::success', data);
if (typeof data.error !== 'undefined') {
showNoResultError = true;
var appData = lastValidResult[currentSearchMode];
} else {
showNoResultError = false;
var appData = self.normalize[currentSearchMode](self, data);
lastValidResult[currentSearchMode] = appData;
}
if (typeof successCallback === 'function')
successCallback(appData);
},
error: function(jqXHR, textStatus, errorThrown) {
//do sth here
// if(jqXHR.status&&jqXHR.status==400){
//     alert(jqXHR.responseText);
// }else{
//     alert("Something went wrong");
// }
// console.log('works now');
// self.log('fetch::error', textStatus, errorThrown);
// if (typeof errorCallback === 'function')
//     errorCallback.apply(this, arguments);
},
complete: function(jqXHR, textStatus) {
console.log(jqXHR);
console.log('complete');
}
});
},

因此,图像显示了它卡住的位置。我只能捕获完整和成功的函数,但是当有 400 响应时,什么也没发生。尝试了任何东西,也完成了((,fail((,因为我认为弃用的行为可能存在问题。但同样的问题。请问有人可以帮忙吗?

尝试:

fetch: function(successCallback, errorCallback) {
var apiUrl = this.applyFilter(filters);
var self = this;
this.log('fetch', apiUrl, currentSearchMode);
$.ajax({
url: apiUrl,
type: 'GET',
cache: (debug) ? true: false,
processData: true,
crossDomain: true,
scriptCharset: 'UTF-8',
jsonp: 'callback',
dataType: 'jsonp',
success: function(data, statusText, jqXHR) {
console.log(jqXHR);
// if(jqXHR.status == 400){
//     console.log('there is an error');
// }
self.log('fetch::success', data);
if (typeof data.error !== 'undefined') {
showNoResultError = true;
var appData = lastValidResult[currentSearchMode];
} else {
showNoResultError = false;
var appData = self.normalize[currentSearchMode](self, data);
lastValidResult[currentSearchMode] = appData;
}
if (typeof successCallback === 'function')
successCallback(appData);
},
error: function(data){
console.log(data);
console.log(data.responseText);
},
complete: function(jqXHR, textStatus) {
console.log(jqXHR);
console.log('complete');
}
});
},

然后,向我显示您的控制台中的内容

不会为跨域请求或 jsonp 请求触发错误回调。

在参考链接中搜索以下内容。

注意:跨域脚本和跨域 JSONP 请求不会调用此处理程序。

参考: http://api.jquery.com/jquery.ajax/

您可以查看此答案,了解如何处理 jsonp 请求的错误

JSONP 请求错误处理

相关内容

最新更新