2017-02-05 6 views
0

AJAX呼び出しを実行しました。DBからデータを選択してクライアントに送り返したいと思います。 $resultSELECT QUERYphpはJSON文字列をechoしません

ケース1の戻り値である:これは罰金

$str = "["; 
    while($row = mysqli_fetch_assoc($result)) { 
      $str = $str ."{". 

          '"Name":'. '"'. $row["Name"] . '"' 

         . "},"; 
    } 
} 
$str = $str . "]"; 
echo str; 

を作品CASE2:

$str = "["; 
    while($row = mysqli_fetch_assoc($result)) { 
      $str = $str ."{". 

          '"ID":'. '"'. $row["ID"] //SEE HERE 

         . "},"; 
    } 
} else { 
    echo "0 results"; 
} 

$str = $str . "]"; 

echo $str; 

CASE3::これはあまりにも正常に動作しますが、以下は500()とエラーになります

$str = "["; 
    while($row = mysqli_fetch_assoc($result)) { 
      $str = $str ."{". 

          '"ID":'. '"'. $row["ID"] . '",' //SEE HERE 
          '"Name":'. '"'. $row["Name"] . '"' 


         . "},"; 
    } 
} else { 
    echo "0 results"; 
} 

$str = $str . "]"; 

echo $str; 

echo strをJSON形式にして送信し、JSON.parse()を使用してクライアント側で解析したいとします。ケース1と2は、キーと値のペアが1つだけの場合に問題ありません。しかし、私は2つのキーと値のペアを置くとすぐにエラーが発生します。

POST https://******************.php 500() 
+0

これは最良の方法ではありません。私の友だち –

+1

@HBensiali私は知っています。あなたはクライアント側でJSオブジェクトの配列を受け取ることができるように私に別の方法を教えてもらえますか? – SKG

答えて

3

本当に適切な機能を使用する必要があります。

プログラミングの習慣が良好です。

$rtn = []; //create array 
while($row = mysqli_fetch_assoc($result)){ 
    //push result into array 
    $rtn[] = ['ID'=> $row["ID"], 'Name'=> $row['Name']]; 
} 

if($rtn)//if array has entries 
    echo json_encode($rtn);//encodes result to json 
else 
    echo "0 results"; 
1

あなたのスクリプトにエラーがあるので、500を返します。以下のコードを追加して、間違いがどこにあるかを確認することができます。

error_reporting(E_ALL); 
ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE); 

おそらくコードにドットがありません。これを確認してください:

$str = $str . "{" . 

    '"ID":' . '"' . $row["ID"] . '",' . 
    '"Name":' . '"' . $row["Name"] . '"' 

. "},"; 
関連する問題