是否可以设置async:false为$ .getJSON调用
调用$.getJSON()
时,是否可以设置async: false
,以便调用块而不是asynchronous?
您需要使用$.ajax()
同步进行调用,如下所示:
$.ajax({ url: myUrl, dataType: 'json', async: false, data: myData, success: function(data) { //stuff //... } });
这将匹配目前使用$.getJSON()
像这样:
$.getJSON(myUrl, myData, function(data) { //stuff //... });
两个答案都是错误的。 您可以。 你需要打电话
$.ajaxSetup({ async: false });
在你的json ajax调用之前。 你可以在callback后将其设置为true(如果你希望它们是asynchronous的话,页面上还有其他的Ajax用法)
我想你们都是对的。 后面的答案工作正常,但它像设置一个全局选项,所以你必须做到以下几点:
$.ajaxSetup({ async: false }); //ajax call here $.ajaxSetup({ async: true });
就我而言,Jay D是对的。 我必须在通话之前加上这个。
$.ajaxSetup({ async: false });
在我以前的代码中,我有这样的:
var jsonData= (function() { var result; $.ajax({ type:'GET', url:'data.txt', dataType:'json', async:false, success:function(data){ result = data; } }); return result; })(); alert(JSON.stringify(jsonData));
它的作品find。 然后我改变
var jsonData= (function() { var result; $.getJSON('data.txt', {}, function(data){ result = data; }); return result; })(); alert(JSON.stringify(jsonData));
警报未定义。
如果我添加这三行,警报再次显示数据。
$.ajaxSetup({ async: false }); var jsonData= (function() { var result; $.getJSON('data.txt', {}, function(data){ result = data; }); return result; })(); alert(JSON.stringify(jsonData));
我不认为你可以在那里设置这个选项。 你将不得不使用jQuery.ajax()和适当的参数(基本上getJSON只是把这个调用包装成一个更简单的API)。
滚你自己的例如
function syncJSON(i_url, callback) { $.ajax({ type: "POST", async: false, url: i_url, contentType: "application/json", dataType: "json", success: function (msg) { callback(msg) }, error: function (msg) { alert('error : ' + msg.d); } }); } syncJSON("/pathToYourResouce", function (msg) { console.log(msg); })