我很难从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数据?
答案 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 )