2017-05-20 18 views
0

this.responseTextの各要素を取得し、JavaScriptのHTMLに入れたいと思います。私のコードに何か間違っていますか?私のコードが私の質問を理解するのに役立つことを願っています。ありがとう。 (p.s.htmlコードが提供されているのでjqueryを使用できません)JavascriptでPHPのJSONデータ(配列)を使用する方法

this.responseTextの例は以下のとおりです。 (alertを使って、私はそれを得た)

{"name":"Hermione Grainger","number":"4","review":"Not as good as the NEXT book in the series, but hilarious and satisfying."}{"name":"Ronald Drumpf","number":"1","review":"Feminist propaganda!"}{"name":"Brienne of Tarth","number":"5","review":"Alanna is my best friend."} 

私のJavaスクリプトは以下の通りです。

function bookReview(){ 
    var reviews = JSON.parse(this.responseText); 
    for(var i=0; i<reviews.length; i++){ 
     var name = document.createElement("h3"); 
     var text = document.createElement("p"); 
     name.innerHTML = reviews[i].name + reviews[i].number; 
     text.innerHTML = reviews[i].review; 

     document.getElementById("reviews").appendChild(name); 
     document.getElementById("reviews").appendChild(text); 
    } 
} 

または私のPHPコードに何か問題がありますか?

$path = "books/$book/"; 
review(glob($path . "review" . "*" . ".txt")); 

function review($reviews) { 
    foreach ($reviews as $each) { 
     $review = file($each, FILE_IGNORE_NEW_LINES); 
     $output = array (
      "name" => $review[0], 
      "number" => $review[1], 
      "review" => $review[2] 
      ); 
     header("Content-type: application/json"); 
     print(json_encode($output)); 
    } 
} 

答えて

1

有効なJSONのように見えません。これは '[{}、{}、{}]'のようになります。 JSONバリデーターを使用することができます。 http://json-validator.com/

$array = []; 
foreach ($reviews as $each) { 
    $review = file($each, FILE_IGNORE_NEW_LINES); 
    $output = array (
     "name" => $review[0], 
     "number" => $review[1], 
     "review" => $review[2] 
     ); 
    array_push($array,$review); 
} 
print(json_encode($array)); 
+0

私は自分のPHPコードを追加しました。私のPHPコードを確認できますか? – Tak

+0

ここで2番目の答えを参照してください:http://stackoverflow.com/questions/6739871/how-to-create-an-array-for-json-using-php(ループ内の配列を生成し、その外側に配置します配列とjson.encode this)。 – aabbcccc

+0

私は以下のコードにそれを変更しましたが、それはうまく動作しませんでした... \t機能レビュー($レビュー){ \t \t foreachの($各として$レビュー){ \t \t \t $見直し=ファイル($各、FILE_IGNORE_NEW_LINES); \t \t \t $出力=配列( \t \t \t \tアレイ( \t \t \t \t \t "名" => $レビュー[0]、 \t \t \t \t \t "番号" => $レビュー[1]、 \t \t \t \t \t "レビュー" => $レビュー[2] \t \t \t \t \t) \t \t \t \t); \t \t \t \t \t} \t \tヘッダ( "コンテンツタイプ:アプリケーション/ JSON")。 \t \t print(json_encode($ output)); \t} – Tak

0

シンプルな使用にこのexempleをAJAXのために:

AJAX:

$.ajax({ 
     url: 'test.php', 
     type: 'POST', 
     datatype: 'Json', 
     data: {'q': val_1}, 
     success: function (response) { 
      var newhref; 
      var newhrefid; 
      var div=document.getElementById("myDropdown"); 
      for(var i = 0; i<response.nunber_of_rows; i++){ 
      newhref= document.createElement("a"); 
      newhref.href= response.tabel[i]; 
      newhref.innerHTML= response.tabel[i]; 
      newhrefid = "idhr_"+i; 
      newhref.setAttribute('id', newhrefid); 
      div.appendChild(newhref); 
      } 
     } 
    }); 

PHP:

...//your code 
echo json_encode (array(
        'tabel'=>$tabel, 
        'nunber_of_rows'=>$nunber_of_rows 
)); 

が正しくあなたが行うことができますJSON配列を生成するにはこのexplplでは

:あなたのAjaxのデータを使用するには

echo json_encode (array(
        'tabel'=>$tabel, 
        'nunber_of_rows'=>$nunber_of_rows 
)); 

:あなたはを通してデータを送り返すあなたのPHPで

datatype = "Json"; 

:電子あなたはこのコード行でJSONを使用していることを、定義します

response.nunber_of_rows 

それは、このリンクからだ例How to use Ajax and JSON for making dropdown menu?

あなたはAJAXを使用しない場合:

PHP:

$phpArray = array(
      0 => "Mon", 
      1 => "Tue", 
      2 => "Wed", 
      3 => "Thu", 
      4 => "Fri", 
      5 => "Sat", 
      6 => "Sun", 

    ) 

JS:

var jArray= <?php echo json_encode($phpArray); ?>; 

    for(var i=0;i<6;i++){ 
     alert(jArray[i]); 
    } 

だけこれを実行する必要がPHPの配列を取得するには:それはこのリンクPass a PHP array to a JavaScript function

からだ

var jArray= <?php echo json_encode($phpArray); ?>; 

へse JSON。パース:

var data = JSON.parse('<?php echo json_encode($data) ?>'); 

例:

PHP:

<?php 
$books = array(
    array(
     "title" => "Professional JavaScript", 
     "author" => "Nicholas C. Zakas" 
    ), 
    array(
     "title" => "JavaScript: The Definitive Guide", 
     "author" => "David Flanagan" 
    ), 
    array(
     "title" => "High Performance JavaScript", 
     "author" => "Nicholas C. Zakas" 
    ) 
); 
?> 

JS:

<script type="text/javascript"> 
// using JSON.parse on the output of json_encode 
var books = JSON.parse('<?php echo json_encode($books); ?>'); 

/* output (with some whitespace added for readability) 
[ 
    {"title":"Professional JavaScript", "author":"Nicholas C. Zakas"}, 
    {"title":"JavaScript: The Definitive Guide", "author":"David Flanagan"}, 
    {"title":"High Performance JavaScript", "author":"Nicholas C. Zakas"} 
] 
*/ 

// how to access 
console.log(books[1].author); // David Flanagan 
</script> 

今すぐあなたの元の配列から値を取得するために、あなただけを使用する必要があります:

books[1].author 

このリンクからの例http://www.dyn-web.com/tutorials/php-js/json/parse.php

関連する問題