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

问题描述 投票:0回答:4

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

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

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

javascript jquery ajax
4个回答
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");
});

0
投票

4年后我遇到了这个问题。我不记得我在什么背景下问这个问题,但对于任何有相同疑问的人:

Http 是一种请求/响应协议。这意味着客户端发送请求,服务器用一些消息/数据响应该请求。该请求的故事到此结束。

为了让服务器在客户端触发某些内容,我们必须使用保持与服务器的连接的东西,而不是在收到响应后结束通信。 Socket.io 是解决这个问题的双向事件驱动库。


0
投票

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

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

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


-1
投票

我相信你的问题与this类似 作者:保罗·汤布林。我使用gdoron提供的答案,它也被标记为最佳解决方案,以及AS7K的评论。

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

注意:未提供

async
参数。

© www.soinside.com 2019 - 2024. All rights reserved.