2016-08-04 9 views
1

データベースからコメントをダウンロードして、私のページに表示したいと思います。現在のコードは、phpファイルが適切なjsonファイルを返さないため、構文エラーを返します。ajaxを使ってデータベースからオブジェクトの配列を取得する

私のPHPコード(接続に問題がないので、部分を取得するだけです)。

if ($result->num_rows > 0){ 

    while($row = $result->fetch_assoc()) { 

     echo json_encode(array(
      "id" => $row["id_com"], 
      "nick" => $row["com_nick"], 
      "email" => $row["com_email"], 
      "text" => $row["com_text"], 
      "data" => $row["com_data"], 
      "ocena" => $row["ocena"] 
     )); 
    } 

戻り値。

{"id":"1","nick":"my_nick","email":"[email protected]","text":"content!","data":"2016-08-03","rate":"5"}{"id":"4","nick":"ra","email":"[email protected]","text":"Hat","data":"2016-08-03","ocena":"1"} ect... 

Ajaxリクエスト(私は問題がここにあると思います)

$.ajax 
    ({ 
     url: "/commdown.php", 
     dataType: 'json', 
     success: function(data) 
     { 
       alert( 

         "id: " + data.id + 
         "\nnick: " + data.nick + 
         "\nemail: " + data.email + 
         "\ntext: " + data.text + 
         "\ndata: " + data.data + 
         "\nocena: " + data.ocena 

      ); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) 
     { 
      alert("Status: " + textStatus); alert("Error: " + errorThrown); 
     } 
    }); 

私はこの問題は、私は単一のAjaxリクエストで複数のオブジェクトをダウンロードする代わりに、別途すべてのコメントに対する要求を呼んでいるということだと思います。

+0

エラーメッセージを引用できますか? – Klaus

+0

無効なJSONを作成するものの代わりに、複数のJSONオブジェクトを返します。あなたの中でそれらを集め、 'echo json_encode();'を実行してください。 – Fairy

答えて

0

/その後、エンコードされたデータは、ページ上に表示するために、AJAXでループを使用することをエコーそこにすべてのデータを追加するために警告ボックスを配列を使用

if ($result->num_rows > 0){ 
    $data = []; 
    while($row = $result->fetch_assoc()) { 

     $data[] = array(
      "id" => $row["id_com"], 
      "nick" => $row["com_nick"], 
      "email" => $row["com_email"], 
      "text" => $row["com_text"], 
      "data" => $row["com_data"], 
      "ocena" => $row["ocena"] 
     ); 
    } 
header('Content-Type: application/json'); 
echo json_encode(data); 

JS:

$.ajax 
    ({ 
     url: "/commdown.php", 
     dataType: 'json', 
     success: function(retdata) 
     { 
      $.each(retdata,function(i,data){ 
       alert( 

         "id: " + data.id + 
         "\nnick: " + data.nick + 
         "\nemail: " + data.email + 
         "\ntext: " + data.text + 
         "\ndata: " + data.data + 
         "\nocena: " + data.ocena 

      ); 
      }); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) 
     { 
      alert("Status: " + textStatus); alert("Error: " + errorThrown); 
     } 
    }); 
+0

$内のコードが動作しません。私は2つの警告を追加しました。 1つの内部成功関数が表示されますが、別の内部関数は表示されません。 – Kuszluk

+0

これは今、感謝しています:)! – Kuszluk

0

これを試してみてください。

$data = array(); 
while ($row = $result->fetch_assoc()){ 
    $data[] = json_encode($row); 
} 
echo json_encode($data); 

どちらでも使用できます。

$data = $result->fetch_all(MYSQLI_ASSOC); 
echo json_encode($data); 
+0

はい、答えを編集しました。まず、考え方の第2の方法を挙げます。 – Sarath

関連する問題