我正在使用jsonp在JQuery中调用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
。该联机帮助页明确指出,但我无法找到替代方案。
有没有不同的方法来实现同样的目标?
由于
答案 0 :(得分:2)
完全不可能同步JSONP。
JSONP的工作原理是创建<script>
标记;浏览器不会公开任何等待<script>
标记的方法。
此外,SJAX 永远不会一个好主意;它将冻结浏览器,直到服务器回复。
您需要正确使用异步。
考虑使用promises。
答案 1 :(得分:0)
另一种选择是阻止用户界面。
使用像BlockUI这样的内容“灰屏”屏幕,直到您的通话结束。
答案 2 :(得分:-1)
使用.ajax功能:
$.ajax({
url: url,
async:false,
success:function (data) {
// Something
}
});