触发单向 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 forreadyState==2
意味着等待来自服务器的响应标头,这比 OP 希望等待的时间略长,但我认为这个答案是最好的使用现有的 XHR API 提供的解决方案。
知道 ajax 请求如何响应服务器刷新缓冲区吗?我之前已经将它与 iframe 一起使用以获得类似的结果,其中我将 刷新到 iframe,这将在服务器端脚本继续处理请求时删除 iframe。
等待就绪状态可能会太长,如果用户看到启动页面他们会喊“DEFECT!”。我想我们只是希望请求能够发出 - 最坏的情况是,他们会等待更长的时间等待缓存在第一次命中时填充。【参考方案2】:
我只会执行没有回调的调用,我不相信有允许 F&F 方法的属性。
对于非常短的 ajax 调用,如果需要,您可以尝试以下代码作为替代。
$.get('URL');
【讨论】:
以上是关于触发单向 ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章