0

最初に始めましょう。タイトルがわかりにくいのでごめんなさい。私はそれを正確に説明する方法を知りませんでしたが、ここに行きます。だから私はデータベースに文字列を照会しています。結果が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 { 

PS私はPHP配列とJSONフォーマットを始めたばかりなので、これが完全に間違っている場合はお詫び申し上げます。まだ学習段階です。

4

2 に答える 2

3

$ nameResult [$ i]を構築しているように見えますが、次のようになります。

$result = array_merge($nameArray, $nameResult[$i]);

これは、forループの各反復で(取得した行ごとに1回)実行します。つまり、毎回$resultを壊してしまいます。

そのforループを終了した後、最終的に$ result(最後の$ personQueryRowsを意味する)を取得し、それをjson_encodeします。

他の質問(http://stackoverflow.com/questions/11257490/jquery-parse-multidimension-array)を見ると、実際に行うべきことは、$personQueryRowsを通過するループの前にあるように見えます。

$output=$nameArray;

次に、array_merge行を次のように置き換えます。

$output[] = $nameResult[$i];

その最後の行は、$result配列を新しい配列メンバーとして$output配列に追加します。これは、配列をネストしていることを意味します。これは、ネストされたJSONに必要なものです。

于 2012-06-29T22:37:31.967 に答える
0

コードは次のようになります。

global $result;
$result = array();
.......    

if ($action == 'profile') {
  while{{{{{{{{...}}}}}}}}}}}

  $encodedJSON = json_encode( $result );
  echo $encodedJSON;
}
于 2012-06-29T22:33:40.567 に答える