Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax请求回调而不等待响应_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript ajax请求回调而不等待响应

Javascript ajax请求回调而不等待响应,javascript,jquery,ajax,Javascript,Jquery,Ajax,我知道我们可以从某个服务器发出javascript ajax请求,它要么接收响应,要么在一段时间后发出超时错误 让我们考虑这个场景,当我们不想等待请求而不是服务器发送响应时,我们可以说它是请求之后的任何时候从服务器到客户端异步的另一个请求,然后用响应调用JavaScript CB函数。 我正在寻找一些方法,主要是支持所有现代浏览器,如果可能的话,除了jQuery之外,不依赖任何第三方插件。Ajax的主要特点是默认情况下是异步的,您的程序将继续运行而不等待响应。所以除非我误解了你的问题,否则这就是

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

让我们考虑这个场景,当我们不想等待请求而不是服务器发送响应时,我们可以说它是请求之后的任何时候从服务器到客户端异步的另一个请求,然后用响应调用JavaScript CB函数。


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

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");
});

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


注意:没有提供异步参数。

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

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


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

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

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


那么您希望服务器根据服务器条款向客户端发送信号?或者特别是在客户端发送post/get?查看web套接字之后,web套接字协议将使您能够在任意方向上传输数据—客户端->服务器,服务器->客户端。请看一个使用套接字或其他可用技术在客户端和服务器之间实现实时通信的库。您可以在服务器上开始处理,并向用户返回请求在队列中的响应。服务器在一段时间后完成请求,并将结果推送到客户端。这是一种推送机制,可以使用WebSocket、旧浏览器中的长轮询或socket之类的库来实现。io@Glubus当服务器收到一个请求,但不使用相同请求的响应推送处理结果时。SatishGadhave:这个推送机制正是我想要的,我希望我能找到一些本地实现。别人的答案不能作为你自己的答案。如果你有自己的答案,把它作为一个新的答案,否则只是分享链接作为一个评论。是的。我完全按照你的帖子做了,那就是引用作者并提供链接。我相信你应该发布应该如何做,因为我们中的许多人都不熟悉这个平台的一些不成文规则。
$.ajax({
    url: "theURL",
    data: theData
});
$.ajax({
  url: 'http://www.some.url/',
  method: 'GET',
  data: {
    some : 'stuff' 
  },
  dataType: 'html',
  timeout: 100
});