可以进行不返回的AJAX调用吗?

时间:2012-09-20 18:08:52

标签: javascript jquery ajax

是否可以在没有任何响应的情况下发送jQuery.ajax调用或等效调用?当我离开带有onbeforeunload命令的页面时,我想在服务器上触发一些东西,但这不是我需要反馈给客户端的东西,所以我只想发送命令而不是等待响应。

这可能吗?

4 个答案:

答案 0 :(得分:8)

每个请求都有响应。即使服务器抛出错误,响应也会返回错误。

如果您不想添加success回调,则可以忽略回复。

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

答案 1 :(得分:2)

您可以使用this stack overflow answer中提到的导航器sendBeacon API或直接链接到here

根据站点上的描述,它异步发送一些数据,并仅检查它是否能够将数据排队发送。卸载处理程序不应像其他异步XMLHttpRequest那样忽略该请求。

  

navigator.sendBeacon(url,data)-如果用户代理能够成功将数据排队等待传输,则sendBeacon()方法返回true,否则返回false。

...

  

确保数据在文档卸载期间已发送是开发人员传统上难以做到的事情,因为用户代理通常会忽略在卸载处理程序中进行的异步XMLHttpRequest。

答案 2 :(得分:1)

如果您尝试尽快返回响应,我认为这更像是服务器架构决策。您可以将请求涉及的实际工作卸载到经纪人或其他东西,以便您尽快返回给用户? 我不认为发送单向消息是可行的

答案 3 :(得分:0)

假设你正在使用这样的东西:

$.ajax({
   url: "test.html",
   context: document.body
})

(借鉴http://api.jquery.com/jQuery.ajax/并编辑),您可以放弃回复。