【发布时间】:2014-02-13 17:13:34
【问题描述】:
我正在尝试从其他域获取 json,我的代码如下:
var token = '';
function getData(){
console.log("get data suc");
for (var i=0; i < urls.length; i++){
var code = 'http://example.com/api/'+ urls[i];
$.ajax({
async: false,
url: code,
type: 'GET',
dataType: 'jsonp',
success: function(data) { showData(data); },
error: function() { console.log('ajax Failed!'); },
beforeSend: setHeader,
});
}
}
function showData(data){
$("<tr></tr>").append("<td>" + data + "</td>")
.appendTo("#results");
console.log(data);
}
function setHeader(xhr) {
xhr.setRequestHeader('Authorization', token);
}
这个结果应该显示为我从数组 urls 中给出的键的顺序。 例如:urls = [1,2,3,4]→应该得到[一,二,三,四] 但我总是得到错误的顺序!(例如:[二、一、三、四]或[三、四、二、一]) 发生了什么? 那是“异步:假”不起作用吗?为什么?
【问题讨论】:
-
即使您的
async: false有效,这也是个坏主意。 -
了解how JSONP works 并意识到它永远不会同步。
标签: javascript jquery ajax jsonp