Jquery $ .ajax async奇怪的行为

时间:2009-04-12 19:20:45

标签: jquery ajax asynchronous

我有一个像这样的代码片段

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之外”是我得到的第一个弹出窗口,第二个是“成功”弹出窗口。有什么明显的东西我不见了吗?

从我的评论中加入Anothny的回复

我的测试环境是win xp sp2,FF 3.0.8 / w Firebug + IE 8.和JQuery v1.3.2。我从萤火虫身上找不到任何明显的东西。

您是否愿意使用此网址“http://pipes.yahoo.com/pipes/pipe.run?_id=1nWYbWm82xGjQylL00qv4w&_render=json&textinput1=obama&_callback=?”

尝试上述代码

1 个答案:

答案 0 :(得分:6)

好吧,你不能有一个同步的jsonp请求。实现jsonp的方式是通过脚本标记hack来允许跨域访问。所以$ .ajax只是忽略了异步属性,因为它只是不能发出同步的jsonp请求。

作为旁注,你应该尝试&避免同步ajax请求。虽然它们在设计上看起来可能看起来更简单,但它们会在网络保留的情况下冻结浏览器并使用户体验非常不愉快。