当前位置:  开发笔记 > 前端 > 正文

$ .ajax函数的成功处理程序,带有非标准的http状态代码

如何解决《$.ajax函数的成功处理程序,带有非标准的http状态代码》经验,为你挑选了2个好方法。

我们编写了一个RESTful服务器API.无论出于何种原因,我们决定对于DELETE,我们希望返回204(无内容)状态代码,并返回空响应.我试图从jQuery调用它,传入成功处理程序并将动词设置为DELETE:

jQuery.ajax({
    type:'DELETE',
    url: url,
    success: callback,
});

服务器返回204,但永远不会调用成功处理程序.有没有办法配置jQuery以允许204s触发成功处理程序?



1> Anurag..:

204应该被视为成功.你使用的是什么版本的jQuery?我做了几个测试,所有200个范围的状态代码都转到了成功处理程序.jQuery 1.4.2的源代码证实了这一点:

// Determines if an XMLHttpRequest was successful or not
httpSuccess: function( xhr ) {
    try {
        // IE error sometimes returns 1223 when 
        // it should be 204 so treat it as success, see #1450
        return !xhr.status && location.protocol === "file:" ||
            // Opera returns 0 when status is 304
            ( xhr.status >= 200 && xhr.status < 300 ) ||
            xhr.status === 304 || xhr.status === 1223 || xhr.status === 0;
    } catch(e) {}

    return false;
},



2> Paul Alexand..:

我有一个simliar问题因为我的脚本也将"Content-Type"标题发送为"application/json".请求成功后,它无法JSON.parse一个空字符串.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有