无法使用jQuery和abort()函数停止ajax请求

7

以下是我的jQuery代码:

var x = $.ajax({
    dataType: "jsonp",
    url: "https://ajax.googleapis.com/ajax/services/search/images?q=google&v=1.0",
    success: function(msg){
       alert( "Jsonp data: " + msg );
    }
});

alert(x);  // x is undefined
// x.abort()​​

您可以在这里尝试这段代码:http://jsbin.com/iyile3/2/edit 我想停止这个ajax请求并停止这个ajax请求的成功函数。
但是我得到的是“x未定义”,我认为我没有停止这个ajax请求和它的成功函数。
所以有人能帮助我吗?
非常感谢!
2个回答

9

那很有道理。

jsonp调用不是普通的XMLHttpRequest(普通的.ajax()返回值)。这样做行不通,因为你无法突破同源策略

JSON-Padding与动态脚本标记插入一起使用。所以基本上,jQuery只在你的网站上创建一个<script>标记,并通过它来加载数据。根本没有XHR对象。

我不认为有一种方法可以提前终止这种请求,但如果我错了,希望有人能纠正我。


是的。使用abort()函数无法终止Jsonp请求。但我认为我已经使用JavaScript的setTimeout()函数解决了这个问题。也许有人会使用clearTimeout()函数,那很好。但在我的情况下,我只使用setTimeout函数来解决问题。 - rqqfccsa

4

我认为文档可能会有一些误导。使用JSONP时不会进行任何AJAX请求。在这种情况下,ajax函数返回一个undefined值,而不是XMLHTTPRequest对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接