2016-10-01 1 views
0

Ich habe eine Zeichenfolge im JSON-Format, und ich möchte ein bestimmtes Element in ihm auswählen und es auf dem Bildschirm mit .innerHTML ausgeben.Warum JSON.parse() wird mir in diesem Fall nicht die Informationen von einem JSON-String erhalten?

Ich habe eine Zeichenfolge namens myData, die als JSON formatiert ist.

Die Zeichenfolge wird aus einer MySQL-Datenbank mit PHP entnommen.

, sie zu erhalten, verwende ich diese:

Ich hole tun, um die Einzelteile und ich kodieren das Array in einen String im JSON-Format

  $faqs = $traerFaqs->fetchAll(PDO::FETCH_ASSOC);  
      $stringFaqs = json_encode($faqs);  

Und ich es dann in einem Artikel setzen zur Verfügung, den DOM aber aus dem Blick verborgen:

  echo '<div id="hiloFaqs" style="display: none;">'; 
      echo $stringFaqs; 
      echo '</div>'; 
      ?> 

Dies ist die Saite, die ich erhalte:

[ 
{"faqID":"1","tituloFaq":"Como accedo al material del Curso?","cuerpoFaq":" 
Lorem ipsum dolor sit amet.<\/p>" 
}, 
{"faqID":"2","tituloFaq":"Como cancelo los pagos del Curso?","cuerpoFaq":" 
At vero eos et accusam et justo duo.<\/p>" 
}, 
{"faqID":"3","tituloFaq":"Que documentacinn debo entregar?","cuerpoFaq":" 
Stet clita kasd gubergren, no sea takimata sanctus.<\/p>" 
}, 
{ 
"faqID":"4","tituloFaq":"Por que estoy suspendido?","cuerpoFaq":" 
Sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.<\/p>" 
},{ 
"faqID":"5","tituloFaq":"Por que estoy pendiente?","cuerpoFaq":" 
Kasd gubergren, no sea takimata sanctus est.<\/p>" 
} 
] 

Jetzt versuche ich, einen bestimmten Artikel zu bekommen und aus irgendeinem Grund kann ich nicht. Ich bin neu in JS, so vielleicht bin ich etwas vergessen sehr albern hier:

var faqs = document.getElementById("hiloFaqs"); 
var myData = faqs.textContent; 
faq = JSON.parse(myData); 
$('#output').append(faq[0]['tituloFaq']); 

habe ich die Ausgabe in Platz in meinem HTML-Datei, wie folgt aus: <span id="output"></span>, aber nichts wird ausgedruckt.

Sollte nicht faq[0]['tituloFaq'] bekommen mich Como accedo al material del Curso? ausgegeben?

Was fehlt mir?

+0

Warum wiederholst du es in HTML? Auch 'htmlspecialchars ($ stringFaqs);' wird es so ändern, dass die Zeichen keine gültige JSON-Zeichenkette mehr erzeugen. –

+0

Wäre es einfacher, es einfach in einem Skript-Tag als echtem Javascript-Objekt wiederzugeben? – adeneo

+0

wie geht das? – Rosamunda

Antwort

0

Zunächst müssen Sie den JSON nicht innerhalb eines versteckten Textknotens erfassen. Stattdessen weise es sofort als globale Javascript-Variable inline zu.

<script> 
var MY_DATA = JSON.parse(<?=$stringFaqs;?>); 
// or 
var MY_DATA = JSON.parse(<?php echo $stringFaqs; ?>); 
</script> 

Geben Sie das ein.

+0

nehmen Sie 'JSON.parse' ab, wenn Sie den Rückgabewert von' json_encode' ausgeben, erhalten Sie bereits einen gültigen Javascript-Wert. Andernfalls haben Sie etwas wie 'JSON.parse ({})', das einen ungültigen Token-Fehler ergibt. –

+0

Sie sollten in keinem der Beispiele 'JSON.parse' haben. Die Zeichenfolge ist bereits JavaScript, Sie können sie einfach in die Seite einfügen, und 'JSON.parse' stirbt, weil Sie ein JavaScript-Array und keine Zeichenfolge übergeben. – meagar

+0

http://www.dyn-web.com/tutorials/php-js/json/array.php Scrollen Sie nach unten. Sie möchten JSON.parse für Codierungsgründe verwenden. "Obwohl es nicht immer notwendig ist, die Ergebnisse von json_encode über einen Parser auf der JavaScript-Seite auszuführen, werden Sie dies im Allgemeinen tun wollen" – chasez0r

Verwandte Themen