javascript - JQuery JSON 解析/AJAX 问题 ('remove' 和 '__proto__' 数组中的键?)

标签 javascript jquery json parsing

使用 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 行):

enter image description here

[Firebugs 调试器看到的 JSON 对象]

下面是对 JSON 对象奇怪部分的仔细观察:

enter image description here

【仔细观察未知数据】

谢谢大家:)

最佳答案

停止使用“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/

相关文章:

javascript - 设置 php 中执行的 phantomjs 的超时时间

javascript - 是否保证在函数(数据)回调完成其工作后将调用传递给always函数的回调

javascript - 如何使用 Jquery 更新数据确认属性内的消息?

python - 将请求中的 JSON 数据转换为 Pandas DataFrame

javascript - 在Processing.js中,如何声明对象类型和对象数组?

javascript - 当另一个函数正常时 jQuery 提交

javascript - 如何让我的 HTML 文件访问 Amazon S3 存储桶中的 CSS 和 JavaScript 文件?

javascript - 如何自动对 HTML 表格中共享相同名称的输入值框求和?

javascript - 如何在redis中使用单个键插入多个json数据

arrays - MongoDB 尝试删除数组项时出错