我有这个代码示例,它以JSON格式返回数据以放入slickGrid:
$.getJSON(url, function(data) {
$.each(data, function() { dataReturn.push(this); });
...
myDataView.setItems(dataReturn);
...
});
但我正在寻找一种同步方式,我尝试过这样的事情:
var dataReturn = JSON.stringfy( $.ajax({url:"...", async: false }).responseText );
myDataView.setItems(dataReturn);
但似乎不是真的一样......我错过了什么?
提前致谢 干杯 路易
答案 0 :(得分:2)
使用$.ajax
并像这样设置async : false
$.ajax({
url:url,
dataType : 'json',
async : false,
success : function(data) {
$.each(data, function() { dataReturn.push(this); });
...
myDataView.setItems(dataReturn);
...
}
});
答案 1 :(得分:0)
您缺少dataType
参数(请参阅jQuery documentation):
$.getJSON()
是:
$.ajax({
dataType: "json",
url: url,
data: data,
success: success
});
尝试避免同步通话。引自jQuery doc (see async prop):
跨域请求和dataType:“jsonp”请求不支持 同步操作。请注意,同步请求可能是暂时的 锁定浏览器,在请求处于活动状态时禁用任何操作。
你可能想尝试这样的jQuery Deferreds:
var jqxhr = $.getJSON(url);
jqxhr.done(function(data) {
$.each(data, function() { dataReturn.push(this); });
...
myDataView.setItems(dataReturn);
...
});
});