Javascript ajax请求回调而无需等待响应

时间:2016-05-20 07:44:37

标签: javascript jquery ajax

我知道我们可以从某个服务器发出javascript ajax请求,它会在一段时间后收到响应或发出超时错误。

让我们考虑这种情况,当我们不想等待请求而不是服务器会在收到请求之后随时发送响应(或者我们可以说它将是服务器到客户端的另一个请求)async然后用响应调用javascript CB函数。

我正在寻找如何解决它的想法主要支持所有现代浏览器,如果可能的话,不依赖于任何第三方插件,除了可能是jQuery。

4 个答案:

答案 0 :(得分:0)

Ajax的主要特性是默认情况下它是异步的,并且程序将继续运行而不等待响应。所以,除非我误读你的问题,否则这就是你所需要的。

如果使用jquery,则传入一个仅在服务器发回响应时才会执行的回调函数。您可以在设置中指定超时,但我不确定在没有超时错误的情况下您可以提供的最长时间。但至少会持续几秒钟。

您甚至可以为成功指定不同的回调,并按如下方式失败(改编自jquery ajax API,但添加了5秒的超时):

var request = $.ajax({
  url: "http://www.some.url/",
  method: "GET",
  data: { some : stuff },
  dataType: "html",
  timeout: 5000
});

request.done(function( data ) {
  console.log( "SUCCESS: " + data );
});

request.fail(function() {
  console.log( "Request failed");
});

答案 1 :(得分:0)

四年后,我遇到了这个问题。我不记得我在什么情况下问过这个问题,但是对于有相同查询的人:

Http是一个请求/响应协议。这意味着客户端发送一个请求,而服务器使用一些消息/数据响应该请求。那是该请求的故事结尾。

为了使服务器在客户端上触发某些操作,我们将必须使用一些保持与服务器的连接的方法,而不是在获得响应后结束通信。 Socket.io是双向事件驱动的库,可以解决此问题。

答案 2 :(得分:0)

要在我的网上商店更新购物车(PHP 会话存储并保留数据库中的商品库存),我只需在调用它后添加 100 毫秒的超时删除成功/错误回调

$.ajax({
  url: 'http://www.some.url/',
  method: 'GET',
  data: {
    some : 'stuff' 
  },
  dataType: 'html',
  timeout: 100
});
<块引用>

注意:有些请求没有到达也没关系,因为在保存订单时,会通过回调发送整个购物车的更新。 如果您的查询需要确认,请不要使用该解决方案!

答案 3 :(得分:-1)

我相信您的问题类似于this 由Paul Tomblin撰写。我使用 gdoron 提供的答案,该答案也被标记为最佳解决方案,还使用了 AS7K 的评论。

$.ajax({
    url: "theURL",
    data: theData
});

注意:未提供async参数。