回应从php到JavaScript的一系列JSON数据,

时间:2014-05-25 11:08:34

标签: javascript php jquery arrays json

我很难从php检索一系列json数据到我的JavaScript文件..

首先,我将一系列json数据存储在php中的数组中,并通过将其包装在for循环中来回显我的JavaScript文件,

<?php

$result = array('{"one": "test","two": "test"}','{"three": "test","four": "test"}');

for ($i = 0; $i < count($result); ++$i) {
    echo $result[$i];
}

?>

在我的JavaScript中,

$.ajax({                              
    url: "visualiser/visualiser_RouteList.php",
    dataType: "JSON",
    async: false,
    success: function(data){
       console.log(data);        
    } 
});

我的控制台根本没有显示任何内容,也没有将每个数组元素识别为json ..

但是如果我只发送一个数组元素,例如,

echo $result[0];

然后它成功显示,

Object {one: "test", two: "test"} 

为什么我不能在我的ajax调用中从php中传递一系列json数据?

3 个答案:

答案 0 :(得分:5)

它不起作用,因为您生成了格式错误的JSON。脚本的输出是

{"one": "test","two": "test"}{"three": "test","four": "test"}

当您访问数组的第一个元素时,只有

{"one": "test","two": "test"}

哪个有效。

PHP有json_encode这将为您完成这项工作,因此您的代码将成为

$result = array(
    array('one' => 'test', 'two' => 'test'),
    array('three' => 'test', 'four' =>'test')
);

echo json_encode($result);

给出输出

[{"one":"test","two":"test"},{"three":"test","four":"test"}]

答案 1 :(得分:1)

您的代码将输出:

{"one": "test","two": "test"}{"three": "test","four": "test"}

这是无效的JSON,所以显然不起作用。 (尝试使用JSON.parse进行解析,然后您就会看到。)

您实际上需要将数据作为数组发送,因此请使用简单的json_encode调用替换for循环:

echo json_encode($result);

这将输出

[{"one": "test","two": "test"},{"three": "test","four": "test"}]

这是有效的JSON,可以解析为Javascript数组。

答案 2 :(得分:0)

你也可以这个剧本

function doj($json){
$result = json_encode($json);
return  json_decode($result, true);
}

$json = array(
'{"one": "test","two": "test"}',
'{"three": "test","four": "test"}'
);
$j = doj($json);

foreach($j as $k=>$v){
$extractagain = json_decode($v);
print_r($extractagain);
}

,输出为:

stdClass Object ( [one] => test [two] => test ) stdClass Object ( [three] => test [four] => test )