Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在通过JSON循环时,无法在Javascript中使用IN运算符_Javascript_Jquery_Json - Fatal编程技术网

在通过JSON循环时,无法在Javascript中使用IN运算符

在通过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字

我有一个Json响应,如下所示:

[{
        "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检索的,不用于扩展讨论;这段对话已经结束。