jquery ajax响应错误无法正常工作

时间:2017-07-25 16:31:58

标签: javascript 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响应时,没有任何事情发生。尝试过任何事情,也是done(),fail(),因为我认为可能存在弃用行为的问题。但同样的问题。请帮忙吗?

2 个答案:

答案 0 :(得分:0)

尝试:

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');
            }
        });
    },

然后,告诉我你的控制台中的内容

答案 1 :(得分:0)

对于跨域请求或jsonp请求,不会触发错误回调。

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

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

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

您可以查看有关如何处理jsonp请求错误的答案

JSONP request error handling