jQuery.ajax()的StatusCode检测连接丢失或离线

问题描述:

statusCode接受一个对象与数值状态代码为键和功能的值,例如:jQuery.ajax()的StatusCode检测连接丢失或离线

$.ajax({ 
    url: '/api/points/' + geocode['place_id'], 
    statusCode: { 
     409:() => { 
     alert('Duplicate'); 
     }, 
     204:() => { 
     valid = true; 
     } 
    } 
    }); 

这如何被​​用于,如果一个请求,以检测因为用户脱机而失败?我不认为jQuery有这种情况下的状态代码(它在docs中没有提到)?

+0

它是什么,可能会超时?您是否试图在收到响应之前测试Ajax请求是否超时? – nnnnnn

+0

@nnnnnn服务器没有响应,连接丢失等。 – dtgq

+0

*“文档中未提及它”* - 是的,在您链接到的页面中,它告诉您如何指定以毫秒为单位的超时,如果没有收到响应,错误处理程序将被调用状态为“timeout”。 – nnnnnn

超时不会引起他们的状态代码,但你可能会error回调处理:

$.ajax({ 
    url: '/api/points/' + geocode['place_id'], 
    statusCode: { 
    409:() => { 
     alert('Duplicate'); 
    }, 
    204:() => { 
     valid = true; 
    } 
    } 
}).error(function(jqXHR, textStatus, errorThrown) { 
    if (textStatus == 'timeout') { 
    // timeout occured 
    } 
}); 
+0

离线时它不工作,“textStatus”只是“错误”,与404的textStatus相同。 ,jQuery将'.error'改为'.fail' – dtgq