什么函数代替jQuery async:false

时间:2015-04-29 02:56:50

标签: jquery ajax asynchronous

在旧版本的jQuery中。有时我使用jQuery ajax并设置async:false来等待来自ajax的响应。但是在今天,async:false已被弃用。我不知道如何使用其他而不是async:false。请建议我。

[我使用jQuery时的代码ajax async:false]

function check(id) {
  var check = '';
  
  jQuery.ajax({
    type : 'post',
    url : 'test.php',
    data : 'id='+id,
    cache:false,
    async:false,
    success:function(data) {
      if(data == 'good') {
        check = 'pass';
      }
      else
      if(data == 'bad') {
        check = 'not_pass';
      }
    }
  });
  
  if(check == 'pass') {
    alert('Pass');
  }
  else
  if(check == 'not_pass') {
    alert('Not pass');
  }
}

在上面的代码中,我使用了async:false来等待test.php的响应。 在test.php但不是async之后:不推荐使用false。

1 个答案:

答案 0 :(得分:0)

async: false总是意味着很少使用,因为它在等待来自服务器的响应时阻止所有用户输入。异步处理结果要好得多,例如:

jQuery.ajax({
    type : 'post',
    url : 'test.php',
    data : 'id='+id,
    cache:false
})
.done(function(data) {
    if (data == 'good') {
        alert('Pass');
    }
    else if (data == 'bad') {
        alert('Not pass');
    }
})
.error(function() {
    //handle the error...
});

请注意,我还使用了新的Promises接口(done()error()回调)。如果您愿意,successerror选项仍有效。