如何使用jquery执行同步json ajax调用

时间:2014-02-19 16:00:19

标签: javascript jquery ajax json jsonp

我有以下json ajax调用:

$.getJSON(server_data.secure_api+'/e/account/check/?callback=?', queryData,
    function(data) {
        has_error = (data.status == 'failure');
});

除了它是异步的外,它完美无缺。我现在需要使它同步,因为我需要暂停调用函数,直到设置has_error。我该怎么做?

我已经尝试过使用.ajax调用,如下所示:

jQuery.ajax({
    url:        server_data.secure_api+'/e/account/check/?callback=?',
    data:       queryData,
    DataType:   'jsonp',
    success:    function(result) {
                has_error = (data.status == 'failure');
            },
    async:      false
});

但它不起作用!我已尝试将DataType设置为json,jsonp或未设置;我试过加入?callback=?并试图让它离开;这一切都没有奏效。我做错了什么?

2 个答案:

答案 0 :(得分:8)

  

默认情况下,所有请求都是异步发送的(即设置为   默认为true)。如果需要同步请求,请将此选项设置为   假。跨域请求和dataType:“jsonp”请求没有   支持同步操作。请注意,同步请求可能   暂时锁定浏览器,在请求时禁用任何操作   活跃。

从jQuery 1.8开始,不推荐使用async:false和jqXHR($ .Deferred);您必须使用success / error / complete回调选项而不是相应的方法

http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:0)

您的用例没有理由要求同步代码。如果你需要一些代码来延迟它的执行,直到异步调用完成,那么将该代码放在回调函数中。