6
我使用的getJSON有一个回调,看起来像这样的跨域长轮询请求:如何杀死一个较老的jsonp请求?
$.getJSON("http://long-polling.com/some.fcgi?jsoncallback=?"
function(data){
if(data.items[0].rval == 1) {
// update data in page
}
});
的问题是请求长轮询服务可能需要一段时间才能恢复,而另一个的getJSON请求可能会在此期间进行并更新页面,即使它是一个陈旧的响应。
REQ1: ħ**号码://long-polling.com/some.fcgi在 10:00 AM
REQ2: ħ**号码://long-polling.com /some.fcgi?在 上午10:01
REQ1回报和更新上 数据的页面上午10:02
我想办法,如果REQ2已经取得从REQ1返回无效。
谢谢!
+1。即将给出同样的答案。 – Boldewyn 2010-05-04 13:27:00
JSONP不使用XMLHttpRequest,它向页面中注入HTML
我不认为工作作为的getJSON使用JSONP方法实际上通过动态插入您的浏览器中执行该脚本标签工作。我不认为有什么办法可以阻止浏览器执行脚本......是吗?
来源
2010-05-05 18:25:13
同意;看到这个问题的更多细节,http://stackoverflow.com/questions/4162261/i-cannot-stop-an-ajax-request-using-jquery-and-abort-function – goggin13 2011-06-23 15:53:35
正如@NewToDB所提到的,你不能取消jsonp请求(例如告诉浏览器停止尝试加载标签的src),但是你可以实现一种机制来有效地忽略旧调用的返回数据。定义一个全局变量,每当您打算进行jsonp调用时都会递增,并将该变量的值作为参数传递给服务器。您还需要将它从服务器传回(我假设您也拥有服务器代码)。如果您的计数器的当前值不等于返回的计数器值,那么您知道另一个服务器调用已经完成,因此您可以忽略返回的数据。
...
来源
2011-08-11 15:04:25 PPrice
我使用全局变量这样的任务。这不是一个很好的方法,但是最简单的方法。
来源
2011-10-20 10:57:12 Leksat