在jquery.get中为JSONP如何设置async false

时间:2013-06-07 00:24:51

标签: jquery jsonp

我正在使用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。该联机帮助页明确指出,但我无法找到替代方案。

有没有不同的方法来实现同样的目标?

由于

3 个答案:

答案 0 :(得分:2)

完全不可能同步JSONP。 JSONP的工作原理是创建<script>标记;浏览器不会公开任何等待<script>标记的方法。

此外,SJAX 永远不会一个好主意;它将冻结浏览器,直到服务器回复。

您需要正确使用异步。
考虑使用promises。

答案 1 :(得分:0)

另一种选择是阻止用户界面。

使用像BlockUI这样的内容“灰屏”屏幕,直到您的通话结束。

答案 2 :(得分:-1)

使用.ajax功能:

$.ajax({
    url: url,
    async:false,
    success:function (data) {
        // Something
    }
});