ajax statusCode 的 jQuery 默认值

Posted

技术标签:

【中文标题】ajax statusCode 的 jQuery 默认值【英文标题】:jQuery default for ajax statusCode 【发布时间】:2012-05-30 11:12:46 【问题描述】:

据我了解,使用 ajax 处理错误结果的一种可能性是:

$.ajax(
    url: someUrl,
    type: 'POST',
    success: function(data) ,
    error: function(jqXHR, exception) 
        if (jqXHR.status === 0) 
            alert('Not connect.\n Verify Network.');
         else if (jqXHR.status == 404) 
            alert('Requested page not found. [404]');
         else if (jqXHR.status == 500) 
            alert('Internal Server Error [500].');
         else if (exception === 'parsererror') 
            alert('Requested JSON parse failed.');
         else if (exception === 'timeout') 
            alert('Time out error.');
         else if (exception === 'abort') 
            alert('Ajax request aborted.');
         else 
            alert('Uncaught Error.\n' + jqXHR.responseText);
        
    
);

或使用statusCode 使其更具可读性:

$.ajax(
    url: someUrl,
    type: 'POST',
    statusCode: 
        200: function(data) 
                   :
                   :
             ,
        401: function() 
                   :
                   :
             ,
              :
              :

我的问题是: 是否可以使用statusCode 并为其设置默认的失败?

【问题讨论】:

【参考方案1】:

不在 statusCode 参数中。但这是因为如果你想抓住一切,这是一种更好(更精简)的方式:

complete: function(jqXHR, textStatus) 
    switch (jqXHR.status) 
        case 200:
            alert("200 received! yay!");
            break;
        case 404:
            alert("404 received! boo!");
            break;
        default:
            alert("I don't know what I just got but it ain't good!");
    

【讨论】:

太好了,谢谢!真的很干净和简单。只是对于那些将要使用它的人,我会补充一点,以便从您需要使用 data = jQuery.parseJSON(jqXHR.responseText); 的请求中获取 json

以上是关于ajax statusCode 的 jQuery 默认值的主要内容,如果未能解决你的问题,请参考以下文章

在 Firefox 的 jQuery $ajax 调用中使用 xhrFields: withCredentials: true 时的状态码 = 0

更改 ajax 请求的 response.statuscode 会引发错误“发送 HTTP 标头后服务器无法设置状态”

Django - Ajax - 参数

jquery 判断 访问页面是否存在 即404

$.ajax({}) 中的data的设置

Ajax通用模板