我在JQuery中使用jsonp进行ajax调用时遇到了一个时间问题。在继续之前,我需要等待服务器调用返回。然而,在http://api.jquery.com/jQuery.get/中似乎没有设置async
的地方。下面是我的代码:
what = ZModel;
jQuery.support.cors = true;
var req = $.get( url, qp, function( stuff ) {
if ( stuff.status == "OK" ) {
what.metadata[i].model_name = stuff.datarows;
} else {
console.log("...LOAD QUERY ERROR: " + stuff.errtext + "; qs: " + thing.qs);
}
alert("success in get");
}, 'jsonp');
req.error( function() {
console.log("...LOAD AJAX ERROR: " + JSON.stringify(arguments));
});
我也尝试了$.ajax
,但代码没有击中success
。手册上说得很清楚,但我想不出别的办法。
是否有不同的方法来完成相同的?
谢谢
实现同步JSONP是完全不可能的。JSONP通过创建<script>
标记来工作;浏览器没有提供任何等待<script>
标记的方法。
此外,SJAX是永远一个好主意;它将冻结浏览器,直到服务器回复。
你需要正确使用异步。
另一个选择是阻塞UI。
使用像BlockUI这样的东西,使屏幕"变灰",直到通话结束。
使用ajax函数:
$.ajax({
url: url,
async:false,
success:function (data) {
// Something
}
});