即使服务器没有响应,jQuery中的"ajax"调用也会激活"成功"功能

Chr*_*row 3 ajax jquery

看起来jQuery的.ajax函数'success'即使没有得到服务器的响应也会激活该函数.我认为这是一个错误.我检查了这个事件,检查'request.status===0'是否有任何其他实例,我应该检查'success'函数将被触发的位置,即使出现错误情况?

我已经发布了下面我正在使用的代码.这种情况通常如何处理?

$.ajax({ 
    async : true, cache : false, dataType : 'json',
    type : 'POST',
    url : 'person/' + personKey,
    data : JSON.stringify({firstName:'Jilopi',}),

    success : function(data, textStatus, request){
        if( request.status === 0 ){
            alert('Error: problem saving person - no response');
        }else{
            alert('Success: saved person');
        }
    },
    error : function(request, textStatus, errorThrown){
        alert('Error: problem saving person');
    },
});
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 8

你已经确定了我所知道的唯一"错误成功"问题.在其上详细一点:这是一个变通代替严格的歌剧院(返回什么是真正一个3040),你可以看到在评论1.4.2这里(和以前的版本):HTTP:// github上. COM/jQuery的/ jQuery的/ BLOB/1.4.2/src目录/ ajax.js#L551

但是,它已在jQuery 1.4.3中被删除,因为您确切的问题,您可以在此处看到它所做的更改.

简短回答:升级到jQuery 1.4.3+以解决您的问题,您可以取消status === 0支票.