【发布时间】:2017-09-17 10:21:21
【问题描述】:
我从以下代码中得到一个奇怪的行为。以下代码来自 ajax 成功,并且console.log(positions); 内部循环工作正常,但外部它什么也没给我。
success: function (data) {
var positions = [];
$.each(data, function (index, value) {
$.each(value, function (index1, value1) {
positions.push({
lat: value1.rider_location.lat,
lng: value1.rider_location.lng,
});
//This works fine | I can get the results. But after commenting out the below line then the last `console.log(positions)` doesn't shows anything.
console.log(positions);
});
});
console.log(positions);
}
来自 Ajax 的 data 给了我以下结果,然后我循环遍历它并将值分配给 positions。
循环内部给我以下结果:
并且在循环之外console.log(positions) 没有给出任何例外,也没有给出任何结果。
【问题讨论】:
-
它没有给出任何例外,因为你声明了一个空的
positions,所以当你记录它时它会打印出来。您的data或value很有可能是空的。尝试在循环中记录这些内容。 -
似乎
data或value是一个空集合。你能显示那些填充的代码吗? -
究竟你想在哪里使用
console.log(positions)?在success:(如问题中)或其他地方? (即在success:function(data) {之外)? -
感谢您更新问题。您可以在问题中的代码 sn-p 中重新创建问题吗? 您提供的代码没有任何问题。我怀疑您已经这样做了,但请阅读minimal reproducible example。
-
我只能猜测您正试图在
success:回调之外访问positions(甚至可能在您的ajax 调用开始之前),但事实并非如此你在问题的代码中得到了什么,两个独立的小提琴已经证明它可以正常工作。
标签: javascript jquery arrays loops