在通过JSON循环时,无法在Javascript中使用IN运算符
我有一个Json响应,如下所示:在通过JSON循环时,无法在Javascript中使用IN运算符,javascript,jquery,json,Javascript,Jquery,Json,我有一个Json响应,如下所示: [{ "item": "1", "addr": "someaddr" }, { "item": "2", "addr": "someotheraddr" } ] [ {"item": 1, "addr": "someaddr"}, {"item": 2, "addr": "someotheraddr"} ] 我如何循环浏览此记录并打印,比如说,每个记录的addr字
[{
"item": "1",
"addr": "someaddr"
},
{
"item": "2",
"addr": "someotheraddr"
}
]
[
{"item": 1, "addr": "someaddr"},
{"item": 2, "addr": "someotheraddr"}
]
我如何循环浏览此记录并打印,比如说,每个记录的addr
字段
我尝试了以下方法:
$.ajax({
url: "someurl",
type: 'get'
success: function (data) {
$.each(data, function(key, val) {
console.log(key, val)
});
alert("Success");
}
});
但它抛出以下错误:TypeError:无法使用“in”运算符搜索“length”
我确信这是因为我没有正确地循环Json数据。有人能指出我在哪里打破循环吗
编辑:Json响应是使用Jquery从API端点检索的。问题可能是您没有传回Json对象,而是传回单独的Json行。因此,如果您可以控制JSON响应,那么应该使JSON看起来像这样:
[{
"item": "1",
"addr": "someaddr"
},
{
"item": "2",
"addr": "someotheraddr"
}
]
[
{"item": 1, "addr": "someaddr"},
{"item": 2, "addr": "someotheraddr"}
]
(请注意,它被包装在一个数组中,每行之间有逗号,字符串周围有双引号)
然后您可以使用您的每个函数。我在下面提供了一个片段,您可以试用
var数据=[
{“item”:1,“addr”:“someaddr”},
{“item”:2,“addr”:“someotheraddr”}
];
$。每个(数据、函数(键、值){
console.log(val.addr)
});代码>
您需要使用数据类型:“json”
告诉jQuery将响应解析为json(如果服务器没有发送内容类型:application/json
)
这不是有效的JSON。如果它应该是一个数组,它需要[]
围绕它,并在它们之间,
。此外,字符串需要用双引号括起来,不是单引号。您还需要在$.ajax
调用中指定数据类型:'json'
。如果服务器未能设置正确的内容类型
响应头,您只需指定数据类型:'json'
。@Quentin如果服务器设置了内容类型,他不会得到该错误,所以你需要它。如果服务器没有传回有效的JSON,他会在JSON.parse()
中出错。他在评论中说他没有正确地将JSON复制到问题中。我没有指定的错误。Json响应是从APICOMENTS检索的,不用于扩展讨论;这段对话已经结束。