在PHP中通过循环回显JSON?

在PHP中通过循环回显JSON?,php,ajax,json,Php,Ajax,Json,我有一个获取DB值并创建对象的循环。我想在循环每次迭代时回显一个JSON对象。到目前为止,我只是在控制台中获得空白。此外,那些注释掉的printf语句也可以正常工作。任何帮助都将不胜感激 AJAX调用 $.ajax({ url:'ajax/ipGet.php', type: 'GET', dataType:'json', success:function(response){ console.log(resp

我有一个获取DB值并创建对象的循环。我想在循环每次迭代时回显一个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);
$infoArray=newarray();
而($row=mysqli\u fetch\u数组($getIpQuery,mysqli\u NUM)){
对于($x=0;$xipAddress=$retrievedInfo[0];
$ipInfo->port=$retrievedInfo[1];
$ipInfo->status=getStatus($ipInfo->ipAddress,$ipInfo->port);
数组推送($infoArray,$ipInfo);
} 
}
echo json_编码($infoArray);
谢谢你的帮助


~rutterfizz

json
必须是一个独立的实体。您正在输出多个单独的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

var somevar = ...json_goes_here...;
你在做什么

var stuff = {...}{...}{...};
这是一个彻头彻尾的语法错误,而不是

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

这是正确的。

谢谢!因此,当我获得Javascript中的数组时,我可以使用
var object=stuff[x]访问每个对象
?是的。json只是一种传输/编码格式。您不应该处理原始json字符串本身。您将字符串解码为本机结构,处理该结构,然后重新编码为json以便发货。很酷,所以我在原始帖子中更新了代码,但我仍然遇到同样的问题。您的db内容也是另一个问题问题。您正在运行嵌套查询,应该将其重写为单个联接查询。而且您似乎将mysql_fetch调用视为返回整个结果集。它们只返回结果的一行。对,因此发生的情况是每个用户都有一个IP列表。还有另一个表存储IP的信息。因此,对于所有用户来说用户下的IP,我希望能够构建一个JSON对象,然后将其发送到客户端。第二个查询是获取有关IP的所有信息。我不明白为什么这个问题会被否决。问题很清楚,添加了相应的代码,所有内容的格式都很好。如果可以,那就太好了评论他们的决定。我给你+1来补偿。谢谢!是的,就像你说的,如果他们说我做错了什么,这会很有帮助。