PHP json_encode 到 Javascript 未定义/空

标签 php javascript json zend-framework

我在将 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 时,它返回为 undefined/null。下面是带有 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 + ')'); 

感谢任何帮助来解释为什么我无法让它回来!

最佳答案

将 PHP 代码保存在一个唯一的文件中,该文件接收一个 post 参数,然后构造 json 数组(如果已设置),在底部您可以执行此操作

echo json_encode($json);
flush();

我不是纯javascript的专业人士,也不熟悉你的方法,但你应该考虑使用jQuery,至少我会建议一种接收json数组的方法,以便你可以轻松工作用它(你还要确保数据是json):

$.ajax(
{
    // Post select to url.
    type : 'post',
    url : 'myPHPAjaxHandler.php',
    dataType : 'json',
    data : 
    {
        'select' : true
    },
    success : function(data)
    {
        // PHP has returned a json array.

        var id, hostname;

        for(var i = 0; i < data.length; i++)
        {
            id = data[i].id;
            hostname = hostname[i].id;
            // Construct a string or an object using the data.

        }
    },
    complete : function(data)
    {
        // Optional.
    }
});

就像我说的,你可以决定是否选择它。对于复杂的项目来说它可以变得很方便。

关于PHP json_encode 到 Javascript 未定义/空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15386962/

相关文章:

php - 当我不更新图像时,它会变成空白并从数据库中删除?

javascript - jquery 如果选中复选框则添加值 true

javascript - apollo graphql 突变 - JSON 输入意外结束

java - 从 JSON 反序列化复杂的 map 结构

java - JSON 数据的 Ajax 响应

php - 我的 while 循环有问题吗?我的代码语法?是不是太多了?

php - 从视频文件生成预览图像?

java - 如何在收到三个 Volley 请求后显示所有数据

php - Codeigniter RESTful API 服务器 - XML 错误?

javascript - 单击图片时的 Bootstrap 模式