首先让我开始吧,抱歉这个令人困惑的头衔。我不知道如何准确描述它,但这里有。所以我在查询数据库中的字符串。如果只找到1个结果,那么创建一个数组,填充信息,编码JSON并返回它相对容易。我很困惑什么时候有多个结果。下面的代码是我正在使用的,但我非常怀疑它是正确的。我无法使用我需要的方法将其编码为JSON格式。如果你能帮助至少指出我正确的方向,我将不止感激!谢谢!
PHP:
if ($action == 'profile') {
while ($pson = mysql_fetch_array($personQuery)) {
$typeSearch = 'profile';
$profQuery = mysql_query("SELECT * FROM tableName WHERE ColumnName LIKE '$query'");
$compQuery = mysql_query("SELECT * FROM tableName2 WHERE ColumnName LIKE '$query'");
if ($profQuery && mysql_num_rows($profQuery) > 0) {
$personQueryRows = mysql_num_rows($profQuery);
while ($row = mysql_fetch_array($profQuery)) {
if ($compQuery && mysql_num_rows($compQuery) > 0) {
while ($com = mysql_fetch_array($compQuery)) {
if (mysql_num_rows($profQuery) > 1) {
$compQueryRows = mysql_num_rows($compQuery);
if ($compQueryRows > 0) {
$compReturn = "true";
} else {
$compReturn = "false";
}
$nameArray = Array(
"success"=>"true",
"date"=>date(),
"time"=>$time,
"action"=>$action,
"returned"=>"true"
);
global $result;
for ($i=1;$i<=$personQueryRows;$i++) {
$nameResult[$i]=Array(
"id"=>$row['id'],
"name"=>$row['name'],
"gender"=>$row['gender'],
"comp"=>$row['company'],
"queryType"=>"profile"
);
$result = array_merge($nameArray, $nameResult[$i]);
}
$encodedJSON = json_encode($result);
echo $encodedJSON;
}
}
}
}
}
}
}
}
返回JSON:
{"success":"true","date":"Jun 29 2012","time":"14:43:16","action":"profile","returned":"true","id":"14321","name":"John Smith","gender":"male","comp":"ABC Studios, LLC.","queryType":"profile"}
{"success":"true","date":"Jun 29 2012","time":"14:43:16","action":"profile","returned":"true","id":"292742","name":"John Smith","gender":"male","comp":"DEF Studios, LLC.","queryType":"profile"}
JavaScript错误(解析JSON时):
Uncaught SyntaxError: Unexpected token {
P.S。我刚刚开始使用PHP数组和JSON格式,所以如果这是完全错误我会道歉。仍在学习阶段。
答案 0 :(得分:3)
看起来你正在建立$ nameResult [$ i],但是你会这样做:
$result = array_merge($nameArray, $nameResult[$i]);
你在for循环的每次迭代中都这样做(对于你回来的每一行一次),这意味着每次,你都在破坏$ result。
完成for循环之后,你最后得到任何$ result(意思是最后的$ personQueryRows),然后json_encode它。
看看你的另一个问题(http://stackoverflow.com/questions/11257490/jquery-parse-multidimensional-array),看起来你真正应该做的是在回到$ personQueryRows的循环之前:
$output=$nameArray;
然后将array_merge行替换为:
$output[] = $nameResult[$i];
最后一行将$ result数组作为新的数组成员附加到$ output数组,这意味着它将嵌套数组,这就是嵌套JSON所需要的。
答案 1 :(得分:0)
您的代码应如下所示:
global $result;
$result = array();
.......
if ($action == 'profile') {
while{{{{{{{{...}}}}}}}}}}}
$encodedJSON = json_encode( $result );
echo $encodedJSON;
}