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

myzjeezk  于 2022-12-02  发布在  Java
关注(0)|答案(4)|浏览(387)

I know we can make a javascript ajax request from some server and it either receives the response or gives timeout error after some time.
Let's consider this scenario when we don't want to wait for the request rather the server would send a response(or we can say it would be another request from server to client) async at any time after getting the request and then call a javascript CB function with the response.
I am looking for ideas for how to go about it mainly supporting all modern browsers and if possible not relying on any 3rd party plugin except may be jQuery.

sy5wg1nm

sy5wg1nm1#

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

t30tvxxf2#

4年后我遇到了这个问题。我不记得我是在什么情况下问这个问题的,但对于任何有同样问题的人:
Http是一个请求/响应协议,这意味着客户端发送一个请求,服务器用一些消息/数据来响应这个请求。
In order for the server to trigger something on the clientside we will have to use something that keeps the connection to the server rather than ending the communication after getting the response. Socket.io is bi directional event driven library that solves this problem.

pxyaymoc

pxyaymoc3#

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

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

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

wz3gfoph

wz3gfoph4#

我相信您的问题与Paul Tomblin的this类似,我使用的是gdoron提供的答案,也是标记为最佳解决方案的答案,还有AS7K的注解。

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

注意:未提供async参数。

相关问题