我有以下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=?
并试图让它离开;这一切都没有奏效。我做错了什么?
答案 0 :(得分:8)
默认情况下,所有请求都是异步发送的(即设置为 默认为true)。如果需要同步请求,请将此选项设置为 假。跨域请求和dataType:“jsonp”请求没有 支持同步操作。请注意,同步请求可能 暂时锁定浏览器,在请求时禁用任何操作 活跃。
从jQuery 1.8开始,不推荐使用async:false和jqXHR($ .Deferred);您必须使用success / error / complete回调选项而不是相应的方法
答案 1 :(得分:0)
您的用例没有理由要求同步代码。如果你需要一些代码来延迟它的执行,直到异步调用完成,那么将该代码放在回调函数中。