我正在使用jQuery发送JSONP请求。这是我正在编写的代码的示例
$.ajax({
'url': 'http://some.external/endpoint/',
'type': 'GET',
'traditional': true,
'data': { 'id': someArrayOfIds },
'dataType': 'jsonp',
'success': function (data) {
console.log(data[0]);
}
});
从端点返回的数据是一个对象数组。但是,没有任何内容记录到控制台。奇怪的是:
$.ajax({
'url': 'http://some.external/endpoint/',
'type': 'GET',
'traditional': true,
'data': { 'id': someArrayOfIds },
'dataType': 'jsonp',
'success': function (data) {
console.log(data);
}
});
工作正常,它输出返回的数据。但是,如果我将data
更改为data[0]
(或者,实际上,尝试对数组中的元素进行任何类型的处理),突然它不会显示任何记录内容。事实上,使用Chrome devtools实时编辑脚本并引用数组中的元素会导致页面崩溃。
我想出的解决方案是创建一个临时变量来将数据复制到:
'success': function (data) {
var temp = data;
console.log(temp[0]);
}
然而,我真的很好奇为什么会这样。我唯一能想到的就是JSONP回调正在发生的事情。有什么想法吗?