使用 Jquery $.ajax 函数从 URL 获取 JSON 对象时,我遇到一个奇怪的问题。
我使用以下 JQuery 调用来检索 JSON 对象:
1 $.ajax({
2 url: '/test/getjson',
3 success: function(data){
4 doSomething(data); //(breakpoint here)
5 },
6 error: function(x,y,z){
7 //error..
8 }
9 });
URL“/test/getjson”返回以下 JSON 对象 (Firebug 中的响应如下所示):
{
"rsp": {
"date": "1299195954782" ,
"type": "Type1" ,
"Main": {
"Category1" : {
"private" : "Y" ,
"properties" : {
"one" : {
"response" : "" ,
"text" : "label" ,
"type" : "property"
},
"two" : {
"options" : [
"1" ,
"2" ,
"3" ,
"4" ,
"5" ,
"6" ,
"7" ,
"8" ,
"9" ,
"10"
],
"response" : "1" ,
"text" : "label2" ,
"type" : "property2"
}
}
},
"username" : "spiderman"
}
}
}
问题
问题是 JSON 对象中的所有数组在被 JQuery 解析后都有带有键“remove”和“__proto__”的额外值(Firebug 的调试器查看 JSON 数据对象,断点在上面 JS 片段中的第 4 行):
[Firebugs 调试器看到的 JSON 对象]
下面是对 JSON 对象奇怪部分的仔细观察:
【仔细观察未知数据】
谢谢大家:)
最佳答案
停止使用“for ... in”迭代数组,并使用索引变量。
for (var i = 0; i < theArray.length; ++i) {
var element = theArray[i];
// ...
}
这些对象属性的存在要归功于浏览器中的 JavaScript 运行时。我不确定为什么它们会给你带来任何麻烦,因为它们不应该是可迭代的。也许如果您展示了处理 ajax 响应的实际代码,问题可能会变得更加清楚。
关于javascript - JQuery JSON 解析/AJAX 问题 ('remove' 和 '__proto__' 数组中的键?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5197925/