如何等待ajax调用返回

15 浏览
0 Comments

如何等待ajax调用返回

我正在尝试使用JQuery,但是在成功执行下一段代码之前,我无法成功等待ajax调用。有没有一种等待ajax调用的方法?我看到了一些例子,但似乎只是盲目地等待x秒钟?\n谢谢,\nJames

0
0 Comments

问题:如何等待一个 Ajax 调用返回?

原因:在使用 Ajax 进行异步请求时,有时候需要等待 Ajax 调用返回结果后再执行后续操作。以下给出两种解决方法。

解决方法一:使用 async: false

$.ajax({
    url: "example.com/ajax",
    async: false,
    success: function(data) {
        // 在此处处理返回的数据
    }
});

解决方法二:使用回调函数

$.ajax({
    url: "example.com/ajax",
    success: function(data) {
        // 在此处处理返回的数据
        // 调用回调函数
        callbackFunction(data);
    }
});
function callbackFunction(data) {
    // 在此处处理返回的数据
    // 执行后续操作
}

0
0 Comments

如何等待一个ajax调用返回的问题是因为在传统的ajax调用中,调用会立即返回,而不会等待服务器响应。这可能导致在ajax调用返回之前执行其他代码,从而可能导致数据不一致或错误的结果。为了解决这个问题,可以使用jQuery的deferreds方法。

deferreds方法允许你在ajax调用返回后执行其他代码。使用deferreds,你可以在ajax调用的成功回调函数中执行需要等待的代码。以下是一个示例:

$.ajax(...).success(function() {
   doSomething();
});

在这个示例中,ajax调用返回后,会执行doSomething()函数。这样可以确保在ajax调用返回之前不会执行其他代码。

如果想要了解更多关于deferreds的信息,可以参考这篇文章:http://www.erichynds.com/jquery/using-deferreds-in-jquery/

0
0 Comments

原因:在前端开发中,经常需要向后端发送异步请求,获取数据后再进行相应的操作。然而,由于异步请求的特性,前端代码在发送请求后并不会等待请求返回,而是继续执行下面的代码。这就导致了一个问题,即如何在异步请求返回之后再继续执行后续的操作。

解决方法:一个常见的解决方法是使用回调函数。在发起异步请求之前,定义一个回调函数,在请求返回后调用这个函数来处理返回的数据。这样就可以确保在获取到数据之后再进行后续的操作。

在jQuery中,可以使用$.ajax()方法来发送异步请求,并通过设置async参数为false来实现同步请求。这样,前端代码会等待请求返回后再继续执行。具体代码如下:

var bodyContent = $.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: {id : this.getAttribute('id')},
      dataType: "html",
      async:false,
      success: function(msg){
         alert(msg);
      }
   }
).responseText;

以上代码中,async参数设置为false,表示发送同步请求。在success回调函数中,可以对返回的数据进行处理。在请求返回后,.responseText可以获取到返回的数据。

然而,需要注意的是,同步请求会导致JS引擎(以及在某些浏览器中,用户界面)被阻塞,直到请求完成。因此,同步请求并不是一个推荐的做法。正如Douglas Crockford在他的文章中所说,同步编程是不尊重的,不应该在用户使用的应用程序中使用。

参考来源:http://api.jquery.com/jQuery.ajax/

Douglas Crockford的文章:http://yuiblog.com/blog/2006/04/04/synchronous-v-asynchronous/

0