一尘不染

有什么方法可以等待AJAX​​响应并停止执行吗?

ajax

这是我要执行的一些代码。我想等待AJAX​​响应,以便可以从服务器返回一些信息。有什么办法可以做到这一点?

function functABC(){
    $.ajax({
        url: 'myPage.php',
        data: {id: id},
        success: function(data) {
            return data;
        }
    });

    //Wait for AJAX (???)
}

var response = functABC();

阅读 219

收藏
2020-07-26

共1个答案

一尘不染

新功能,使用jquery的promise实现:

function functABC(){

  // returns a promise that can be used later.

  return $.ajax({
    url: 'myPage.php',
    data: {id: id}
  });
}


functABC().then( response => 
  console.log(response);
);

很高兴在这里读到。

这实际上不是“同步的”,但我认为它可以达到OP的预期。

旧的(async自此之后,jQuery的选项已被弃用):

所有Ajax调用都可以异步(使用回调函数,这是在“成功”键之后指定的函数)或同步完成-有效地阻止并等待服务器应答。要获得同步执行,您必须指定

async: false

就像这里描述的

但是请注意,在大多数情况下,异步执行(通过成功的回调)就可以了。

2020-07-26