0

我有一个循环来获取数据库值并创建一个对象。每次循环遍历时,我都想回显一个 JSON 对象。截至目前,我的控制台中只是一片空白。此外,那些注释掉的printf语句工作正常。任何帮助将非常感激!

AJAX 调用

$.ajax({
        url:'ajax/ipGet.php',
        type: 'GET',
        dataType:'json',
        success:function(response){
            console.log(response);
        }

    });

PHP 数据生成

$infoArray = new Array();
while($row = mysqli_fetch_array($getIpQuery, MYSQLI_NUM)){
    for($x=0;$x<count($row);$x++)
    {
        $getIpInfo = mysqli_query($dbcon,"SELECT * FROM ipInfo WHERE address='$row[$x]'");
        $retrievedInfo = mysqli_fetch_array($getIpInfo,MYSQLI_NUM);
        $ipInfo->ipAddress = $retrievedInfo[0];
        $ipInfo->port = $retrievedInfo[1];
        $ipInfo->status = getStatus($ipInfo->ipAddress, $ipInfo->port);
        array_push($infoArray,$ipInfo);

    } 
  }

echo json_encode($infoArray);

谢谢你的帮助!

~地毯嘶嘶声

4

1 回答 1

2

json必须是一个独立的实体。您正在输出 MULTIPLE 单独的 JSON 文本位,这是不正确的。

JSON 编码应该是你做的最后一件事,例如

while(...) {
   $array[] = ....
}
echo json_encode($array);

从客户端的角度考虑你在做什么......构建一个ipinfo数组,所以你运行一次循环并产生

{"ipAddress":"127.0.0.1","port":80,....}

但是你做了很多次,所以你最终得到

{"ipAddress":"127.0.0.1","port":80,....}{"ipAddress":"127.0.0.1","port":80,....{"ipAddress":"127.0.0.1","port":80,....}

作为你的输出,现在你有非法的javascript。请记住,JSON 文本本质上是 Javascript 赋值操作的右侧,例如

var somevar = ...json_goes_here...;

所以你在做

var stuff = {...}{...}{...};

这是一个彻底的语法错误,而不是

var stuff = [{...},{...},{...}];

这是正确的。

于 2013-10-20T20:26:49.173 回答