0

我在使用 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。联机帮助页清楚地说明了这一点,但我无法找到替代方案。

有没有不同的方法来完成同样的事情?

谢谢

4

3 回答 3

2

做同步 JSONP 是完全不可能的。JSONP 通过创建<script>标签来工作;浏览器不公开任何等待<script>标签的方式。

此外,SJAX从来都不是一个好主意。它将冻结浏览器,直到服务器回复。

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

于 2013-06-09T02:11:40.287 回答
0

另一种选择是阻止 UI。

使用诸如BlockUI之类的东西使屏幕“变灰”,直到您的通话结束。

于 2015-05-10T06:35:02.223 回答
-1

使用 .ajax 函数:

$.ajax({
    url: url,
    async:false,
    success:function (data) {
        // Something
    }
});
于 2013-06-08T12:12:14.353 回答