Jquery $.ajax异步行为的奇怪问题

5
我有一个类似这样的代码片段:

```

var searchurl="http://mysite.com/searchpath?q=test";
$.ajax({
   type: "GET",
   url: searchurl,
   cache: false,
   dataType : "jsonp",
   async : false,
   success: function(data){
        alert("success");
   }
});
alert("outside ajax");

问题在于我没有看到异步工作。 "外部ajax"是我得到的第一个弹出窗口,"成功"是第二个。我错过了什么显而易见的东西吗?
从我的评论中添加Antony的回复
我的测试环境是Win XP SP2,FF 3.0.8 /w Firebug + IE 8。和JQuery v1.3.2。从Firebug中我没有找到任何明显的问题。
你愿意尝试使用此URL "http://pipes.yahoo.com/pipes/pipe.run?_id=1nWYbWm82xGjQylL00qv4w&_render=json&textinput1=obama&_callback=?"来测试以上代码吗?

尝试不使用 "jsonp?",可能是因为jsonp与异步不兼容。 - Jason Cohen
JSONP 从技术上讲并不使用 AJAX,而是使用一个嵌入到文档 HEAD 中的“script”标签。这可能不是你遇到的唯一问题,但肯定是一个问题... - mishac
1个回答

6

无法进行同步的jsonp请求。jsonp的实现方式是通过script标签hack来允许跨域访问。因此,$.ajax仅仅忽略异步属性,因为它无法进行同步的jsonp请求。

顺便提一下,您应该尝试避免同步ajax请求。虽然它们在设计上可能看起来更简单,但在网络保留的情况下会导致浏览器冻结,并且会给用户带来非常不愉快的体验。


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