2017-05-20 2 views
0

Ich möchte jedes Element innerhalb von this.responseText abrufen und in meinem HTML auf Javascript setzen. Ist in meinem Code etwas nicht in Ordnung? Ich hoffe, dass mein Code Ihnen hilft, meine Frage zu verstehen. Vielen Dank. (p.s. der HTML-Code wird zur Verfügung gestellt, und so kann ich nicht jquery verwenden.)Wie verwendet man JSON-Daten (Array) aus PHP in Javascript

ein Beispiel für this.responseText ist unten; (Durch die Verwendung von alert, ich habe, dass)

{"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."} 

Und mein Java-Skript unten ist;

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); 
    } 
} 

oder ist da etwas falsch in meinem PHP-Code ??

Antwort

1

Dies sieht nicht wie gültiger JSON aus, sollte wie '[{}, {}, {}]' aussehen. Wenn Sie möchten, können Sie einen JSON-Validator verwenden, z. http://json-validator.com/.

das JSON-Array generieren richtig können Sie tun:

$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

Ich habe meinen PHP-Code hinzugefügt. Können Sie bitte meinen PHP-Code überprüfen? – Tak

+0

siehe 2. Antwort hier: http://stackoverflow.com/questions/6739871/how-to-create-an-array-for-json-using-php (erzeugen Sie die Arrays in der Schleife, dann außerhalb von ihnen setzen sie in ein Array und json.encode dieses). – aabbcccc

+0

habe ich es unten auf den Code, aber es funktionierte nicht gut ... \t Funktion Bewertung ($ Bewertungen) { \t \t foreach ($ Bewertungen wie $ pro Stück) { \t \t \t $ Bewertung = file ($ je , FILE_IGNORE_NEW_LINES); \t \t \t $ output = array ( \t \t \t \t Array ( \t \t \t \t \t "name" => $ Bewertung [0], \t \t \t \t \t "number" => $ Bewertung [1], \t \t \t \t \t "Bewertung" => $ Bewertung [2] \t \t \t \t \t) \t \t \t \t); \t \t \t \t \t} \t \t header ("Content-Type: application/json"); \t \t drucken (json_encode ($ output)); \t} – Tak

0

Einfache Verwendung dieses exemple für 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 
)); 

In diesem Beispiel e Sie definieren, dass Sie Json mit dieser Codezeile verwenden:

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

die Daten zu verwenden, in Ihrem Ajax:

datatype = "Json"; 

In Ihrem PHP Sie die Daten über zurückschicken

response.nunber_of_rows 

Das Beispiel aus dieser Verbindung ist How to use Ajax and JSON for making dropdown menu?

Wenn Sie nicht wollen, AJAX verwenden:

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]); 
    } 

Um den PHP-Array, das Sie nur dies tun müssen, bekommen:

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

Das Beispiel aus dieser Verbindung ist Pass a PHP array to a JavaScript function

Zu Ihnen u se JSON.analysieren:

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

Beispiel:

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> 

nun einen Wert von Ihrem ursprünglichen Array zu erhalten, müssen Sie nur verwenden:

books[1].author 

Das Beispiel ist von diesem Link http://www.dyn-web.com/tutorials/php-js/json/parse.php