jQuery.ajax()statusCode检测连接丢失或脱机

时间:2017-02-27 01:07:13

标签: jquery ajax

statusCode将带有数字状态代码的对象作为键,并将其用作值,例如:

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

如何在用户离线时检测请求是否失败?我不认为jQuery有这个场景的状态代码(docs中没有提到它)?

2 个答案:

答案 0 :(得分:0)

超时不会引发任何状态代码,但您可以使用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
  }
});

答案 1 :(得分:0)

jQuery提供了.fail()

$.ajax({
    // Your code
}).fail(function () {
   console.dir("Trouble connecting: check your connection and try again.")
   //See it in action by switching to Offline in Chrome DevTools
   //Add any other custom message via jQuery here
});

http://api.jquery.com/deferred.fail/