触发单向 ajax 调用

Posted

技术标签:

【中文标题】触发单向 ajax 调用【英文标题】:Fire a one-way ajax call 【发布时间】:2012-11-29 10:07:13 【问题描述】:

我有一个 WCF 服务,它在第一次被调用时需要很长时间来处理,然后将这些结果缓存在 HttpRuntime.Cache 中。为了初始化这个缓存,我想从 javascript 触发一个即发即弃的 ajax 调用。

现在我在页面中有这个 javascript:

$.ajax(
    type: 'GET',
    url: getServiceURL() + 'PrimeCacheAjax',
    contentType: 'application/json; charset=utf-8'
);

PrimeCacheAjax 函数只是执行一个虚拟调用来填充缓存。

这种方法的唯一问题是带有此 ajax 调用的页面是一种登录页面,它执行一些 javascript,打开另一个窗口并自行关闭。当窗口在服务器响应之前自行关闭时,我在提琴手中看到一个取消的请求。我担心这可能会导致 ajax 调用可能无法到达服务器的情况,这可能吗?

有没有办法指定(使用$.ajax())没有响应,或者它真的不重要?

【问题讨论】:

只需执行$.ajax 调用,无需回调,这正是您的代码将执行的操作。 【参考方案1】:

唯一重要的是对服务器的请求是否未完成。在退出之前,您应该检查以确保调用的 readyState 值为 2 [aka sent]。

【讨论】:

Waiting for readyState==2 意味着等待来自服务器的响应标头,这比 OP 希望等待的时间长,但我认为这个答案是最好的使用现有的 XHR API 提供的解决方案。 知道 ajax 请求如何响应服务器刷新缓冲区吗?我之前已经将它与 iframe 一起使用以获得类似的结果,其中我将 刷新到 iframe,这将在服务器端脚本继续处理请求时删除 iframe。 等待就绪状态可能会太长,如果用户看到启动页面他们会喊“DEFECT!”。我想我们只是希望请求能够发出 - 最坏的情况是,他们会等待更长的时间等待缓存在第一次命中时填充。【参考方案2】:

我只会执行没有回调的调用,我不相信有允许 F&F 方法的属性。

对于非常短的 ajax 调用,如果需要,您可以尝试以下代码作为替代。

$.get('URL');

【讨论】:

以上是关于触发单向 ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章

ajax调用后Jquery事件不会触发

如何防止ajax调用两次触发

JQuery 按钮未通过 ajax 触发服务调用

等到三个 ajax 调用解决触发函数(延迟?)

非网站成员未触发 Wordpress ajax 调用

当 jQuery ajax 调用开始时,loadmask 没有触发