Javascript 如何将Json数据格式化为所需格式并在循环中迭代?

Javascript 如何将Json数据格式化为所需格式并在循环中迭代?,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我在学习JSON,所以我有点混淆了数据格式、数组、对象和字符串 首先,我需要这种格式的数据(在jQuery页面中)。这是对象还是数组 var data = [[2015-10-29 11:35:33, 315.71], [2015-10-29 11:36:33, 317.45], [2015-10-29 11:38:52, 317.50], [2015-10-29 11:42:08, 315.86], [2015-10-29 11:43:32, 314.93], [2015-10-29 11:5

我在学习JSON,所以我有点混淆了数据格式、数组、对象和字符串

首先,我需要这种格式的数据(在jQuery页面中)。这是对象还是数组

var data = [[2015-10-29 11:35:33, 315.71], [2015-10-29 11:36:33, 317.45], [2015-10-29 11:38:52, 317.50], [2015-10-29 11:42:08, 315.86], [2015-10-29 11:43:32, 314.93], [2015-10-29 11:50:00, 313.19], [2015-10-29 11:35:33, 313.34]]; 
但我现在是这样(在PHP页面中)。这是绳子吗

 var data = [{"bv ":"27590","datey ":"2015-10-29 11:35:33"},{"bv ":"27590","datey ":"2015-10-29 11:36:33"},{"bv ":"27590","datey ":"2015-10-29 11:37:31"},{"bv ":"27590","datey ":"2015-10-29 11:38:34"},{"bv ":"27590","datey ":"2015-10-29 11:38:52"},{"bv ":"27590","datey ":"2015-10-29 11:39:15"},{"bv ":"27590","datey ":"2015-10-29 11:42:08"},{"bv ":"27590","datey ":"2015-10-29 11:42:48"},{"bv ":"27590","datey ":"2015-10-29 11:43:32"},{"bv ":"27590","datey ":"2015-10-29 11:50:00"}];
当我通过ajax在jQuery页面中接收到
数据时(来自上面的PHP页面)

那么,我是否以我想要的正确格式获取了数据?
[[2015-10-29 11:35:33315.71],[2015-10-29 11:36:33317.45],我如何迭代这个数据数组

有人帮我理解这里涉及的数据格式以及遍历它们的方式

我试过:

(一)

这是我的ajax和PHP脚本,供您参考:

$(function(){
  var data;
  $.ajax({
    dataType: "json",
    url: 'query_sales.php',
    success: function(data){
        alert(data);
    /*$.each(data, function(i, item) {
    alert(data[i].datey);
    });​*/
    }//close success
  });//close ajax
});//close function
PHP脚本:

$acceptedUser = new search();
$sales = $acceptedUser->get_sales_graph();
$before = array();
foreach($sales as $k=>$v)
{

    array_push($before,array("bv "=>$v['total_bv'],"datey "=>$v['as_of_date']));

}
echo json_encode($before);

您可以尝试更改此设置:

array_push($before,array("bv"=>$v['total_bv'],"datey"=>$v['as_of_date']));
//--------------------------^^---------------------^^--you have spaces in your keys
然后在成功功能中,您可以执行以下操作:

success: function(data){
    var arr = [];
    $.each(data, function(i, item){
       arr.push([item.bv, item.datey])
    });    
}
检查以下示例:

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“bv”:“27590”,“datey”:“2015-10-29 11:42:48”},{“bv”:“27590”,“datey”:“2015-10-29 11:43:32”},{“bv”:“27590”,“datey”:“2015-10-29 11:50:00”}); var-arr=[]; $。每个(数据、功能(i、项){ arr.push([+item.bv,item.datey]) }); document.body.innerHTML=''+JSON.stringify(arr)+'';
for(i=0; i < data.length; i++)
{
   alert(data.[i].datey);//says undefined
}  

您的第一个
var数据
无效。您的第二个数据是一个对象数组

你试过:

for(i=0; i < data.length; i++)
{
   alert(data.[i]["datey  "]);
}  

数组中的
2015-10-29 11:35:33
会导致错误。在您尝试
$的部分。每个
都尝试过
警报(item.datey)
?@roullie,我喜欢,警报(数据[I].datey);我认为它是有效的。你能说出我最初得到的数据格式和我想要的数据格式吗?就我所知,你的json中没有任何十进制值。虽然你可以使用
+item.bv
+item.datey
将值转换为数字。但是
的时间会给你带来问题,最好是将其作为字符串表示形式保留,就像现在一样。@Vani看到了关于命名的问题的答案。但是为什么第一个无效?是的?因为您有两种类型的数据:字符串和数字。并且您的第一个
var数据
具有类似
2015-10-29 11:35:33
的值,这些值不是字符串(因为它们没有引号包围)而不是数字(因为它们有空格之类的附加字符)。如果你用引号将它们括起来,它们将变得有效,但仍然不是很好的JSON,因为它们没有命名。现在我知道了。你能在这方面帮助我吗。我问了一个新问题,现在我认为它与数据格式问题密切相关。你的问题已结束。请参考此问题:
for(i=0; i < data.length; i++)
{
   alert(data.[i].datey);//says undefined
}  
for(i=0; i < data.length; i++)
{
   alert(data.[i]["datey  "]);
}  
array_push($before,array("bv"=>$v['total_bv'],"datey"=>$v['as_of_date']));