在jquery.获取JSONP如何设置async为false



我在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
    }
});

最新更新