Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
Javascript 迭代JSON提供字符,而不是元素_Javascript_Jquery_Json - Fatal编程技术网

Javascript 迭代JSON提供字符,而不是元素

Javascript 迭代JSON提供字符,而不是元素,javascript,jquery,json,Javascript,Jquery,Json,我正在使用.getJSON将数据拉入图形。出于某种原因,当我尝试循环遍历JSON数组时,它会给我每个单独的字符,就像它没有将其视为数组一样,但当我将数据转储到控制台时,它是格式正确的JSON <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script&g

我正在使用.getJSON将数据拉入图形。出于某种原因,当我尝试循环遍历JSON数组时,它会给我每个单独的字符,就像它没有将其视为数组一样,但当我将数据转储到控制台时,它是格式正确的JSON

  <!DOCTYPE html>
  <html>
  <head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script>
  $.getJSON("/getgraphdata", function(result) {
      console.log(result.length);                                                                
      testFunction(result);
  });
 </script>
 </head>

 <body>
 <script>
 function testFunction(data) {
     console.log(data); // line 16
     //console.log(data.length); Gives total character count. 
     for(var i = 0; i < data.length; i++) {
         var obj = data[i];

         //console.log(obj.id);
     }
 }


 </script>
 </body>
 </html>
我在这里用的是评分最高的答案

如果我注释掉第21行,它显示未定义。如果我使用console.log(obj),它将遍历数组中的每个字符


所有东西都指向它,并没有将其视为数组,但[]在那里

您可以使用JSON.parse将字符串解析为javascript对象

因此,在您的
testFunction
中,您应该这样做


data=JSON.parse(data)

您可以使用JSON.parse将字符串解析为javascript对象

因此,在您的
testFunction
中,您应该这样做


data=JSON.parse(data)

看起来您的
数据
包含JSON字符串而不是数组。如上所述,您可以使用
JSON.parse
来解析它。但是,看起来您的API响应的内容类型无效,这就是为什么
getJSON
不单独解析响应。

看起来您的
数据
包含json字符串而不是数组。如上所述,您可以使用
JSON.parse
来解析它。但看起来您的API响应的内容类型无效,这就是为什么
getJSON
不单独解析响应的原因。

这是有效的。既然数据已经是JSON格式,为什么还需要这样做呢?从这个问题来看,数据是字符串格式的,因此必须解析ITA。如果返回的内容类型指示响应是JSON,jQuery将自动解析响应。如果jQuery没有解析响应,那么您发送了错误的内容类型。这是有效的。既然数据已经是JSON格式,为什么还需要这样做呢?从这个问题来看,数据是字符串格式的,因此必须解析ITA。如果返回的内容类型指示响应是JSON,jQuery将自动解析响应。如果jQuery没有解析响应,那么您发送了错误的内容类型。谢谢。api没有返回正确编码的信息,即使它看起来是正确的。一旦修复了,就不需要parse语句了。所以我说的内容类型不是100%正确。你能更详细地描述一下无效编码吗?我很好奇到底出了什么问题。谢谢。api没有返回正确编码的信息,即使它看起来是正确的。一旦修复了,就不需要parse语句了。所以我说的内容类型不是100%正确。你能更详细地描述一下无效编码吗?我很好奇到底出了什么问题。
[{"id":"1375857","temperature":"78.98","humidity":"90.2","nodeName":"Bsmt_Front","timestamp":"1536424185"},{"id":"1375856","temperature":"78.98","humidity":"77.1","nodeName":"Bsmt_Back","timestamp":"1536424185"},{"id":"1375855","temperature":"77.54","humidity":"49.9","nodeName":"Living_Room","timestamp":"1536424180"},{"id":"1375854","temperature":"0","humidity":"0","nodeName":"Bsmt_Room","timestamp":"1536424179"},{"id":"1375853","temperature":"79.52","humidity":"82.7","nodeName":"Flow_Tent","timestamp":"1536424158"}]