我在将 JSON 从 PHP 返回到 Javascript 时遇到问题。下面是我创建 JSON 的 PHP:
$environment[] = array('id' => $env, 'adjacencies' => $hostnames);
foreach($hostnames as $hostname) {
$environment[] = array('id' => $hostname, 'name' => $hostname, 'data' => array());
}
return json_encode($environment);;
当我将 json_encode 环境打印到文本文件时,它返回为:
[{"id":"Dev","adjacencies":["tb23","tbwag","tbvg","tbut"]},{"id":"tb23","name":"tb23","data":[]},{"id":"tbwag","name":"tbwag","data":[]},{"id":"tbvg","name":"tbvg","data":[]},{"id":"tbut","name":"tbut","data":[]}]
似乎这可以正确打印出来,但是当我将它返回给 Javascript 时,它会以未定义/空值的形式返回。下面是带有 ajax 调用的 javascript:
var ajax = new AJAX();
var args = "id=" + $("#apps").val() + "&env=" + node.id + "&nocache=" + (new Date()).valueOf();
ajax.connect("POST", "http://" + window.location.hostname + "/project/graph/host", args, function(json) {
var output = '';
for (property in json) {
output += property + ': ' + json[property]+'; ';
}
alert(output);
});
我显然已经尝试了很多不同的方法来让它打印出来,但没有任何运气。在 PHP 中,我尝试了 json_last_error,它返回为“0”,这意味着 JSON 结构没有问题。
最后,我想在 Javascript 中使用以下命令来继续构建我的图表:
var hostNodes = eval('(' + json + ')');
对于为什么我不能让它回来的任何帮助,我们将不胜感激!