我有一个循环来抓取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);
感谢您的帮助!
〜Carpetfizz
答案 0 :(得分:2)
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。请记住,JSON文本必然是Javascript赋值操作的右侧,例如
var somevar = ...json_goes_here...;
所以你正在做
var stuff = {...}{...}{...};
这是一个彻头彻尾的语法错误,而不是
var stuff = [{...},{...},{...}];
这是正确的。