为什么这会给出“未定义”状态

时间:2016-04-08 15:16:59

标签: php jquery json ajax

我试图用PHP回应一些JSON。我回忆的我的数组是静态的,其中一部分在数组中有多个记录。

代码

$return_output = array();
$return_output['error'] = false;

while (($serverLog_line=fgets($fopen_serverLog))!==false) {
     $return_output[] = array(
         "line" => $serverLog_line,
     );
}

echo json_encode($return_output);

Jquery回应它

$.getJSON("https://oasis-hosting.net/panel/handlers/server_functions/get.serverLog.php?service_id=22", 
function(result){
   var json = result;
   $.each(json, function(i, data) {
       $("#gameTerminal_content").append("" + data.line + "");
   })
});

现在,它确实回显了结果,但它会回显一个结果,表示“未定义”。屏幕截图:https://gyazo.com/47d2fbef749b94585c78a79b207fa65f

谢谢

2 个答案:

答案 0 :(得分:3)

这是因为您将实际数据列表与error元素混合在一起。

更改结构,使数据位于自己的数组中:

$return_output['error']     = false;
$return_output['data']     = array();

同时:

$return_output['data'] = array(
    "line" => $serverLog_line,
);

在JavaScript中,只迭代数据列表而不是错误元素:

var json = result.data;

答案 1 :(得分:0)

它写在命令控制台上,它写道:

"无法阅读该物业' line' of null"

这意味着,$ return_output返回null。我不擅长php,但我认为你返回$ return_output但你修改了$ return_output []。

这些看起来像两个不同的变量。这应该是原因。