如何杀死旧的jsonp请求?

pfg*_*pfg 6 jquery jsonp

我有一个使用getJSON的跨域长轮询请求,回调看起来像这样:

$.getJSON("http://long-polling.com/some.fcgi?jsoncallback=?"
    function(data){
          if(data.items[0].rval == 1) {
            // update data in page
          }
    });
Run Code Online (Sandbox Code Playgroud)

问题是对长轮询服务的请求可能需要一段时间才能返回,同时可能会发出另一个getJSON请求并更新页面,即使它是陈旧的响应.

Req1:h**p://long-polling.com/some.fcgi上午10:00

Req2:h**p://long-polling.com/some.fcgi?上午10:01

Req1返回并更新页面上午10:02的数据

如果已经有Req2,我想要一种方法来使Req1的返回无效.

谢谢!

may*_*mom 7

我认为这不起作用,因为getJSON使用JSONP方法,它实际上通过动态插入浏览器执行的脚本标记来工作.我认为没有办法阻止浏览器执行脚本......是吗?


Pet*_*dIt 5

当您发出ajax请求时,它返回XMLHttpRequest对象.如果您想要abort通话,可以.abort()在上面调用方法.

var request = $.getJSON(. . . . . );
request.abort();
Run Code Online (Sandbox Code Playgroud)

  • JSONP不使用XMLHttpRequest,它会在页面中注入HTML <script>标记.这不能中止. (7认同)