我有这样的代码片段
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=?"
好吧,你不能有一个同步的jsonp请求.实现jsonp的方式是通过脚本标记hack来允许跨域访问.所以$ .ajax只是忽略了异步属性,因为它不能发出同步的jsonp请求.
作为旁注,您应该尝试避免同步ajax请求.虽然它们在设计上看起来可能看起来更简单,但是在网络保留的情况下它们最终会冻结浏览器并且会产生非常不愉快的用户体验.