2016-10-01 12 views
0

私はjson形式の文字列を持っています。その内部の特定の項目を選択し、.innerHTMLを使って画面に出力したいと考えています。JSON.parse()がこの場合json文字列から情報を取得できないのはなぜですか?

JSON形式のmyDataという文字列があります。

文字列は、PHPを使用してmySQLデータベースから取得されます。私はアイテムを取得行う

と私はJSON形式

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

を文字列に配列をエンコードそして私はアイテムの内側にそれを置く:

それらを得るために、私はこれを使用しますDOMに利用できるが、ビューから隠さ:

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

これは私が取得する文字列です:

[ 
{"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>" 
} 
] 

今、私は特定のアイテムを手に入れようとしていますが、何らかの理由で私はできません。私はJSに新たなんだ は、ので、多分私はここに非常に愚かな何かを忘れている:

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

を、私はこのように、私のhtmlファイルの代わりに、出力を持っています:<span id="output"></span>が、何もプリントアウトされなかっます。

すべきではないfaq[0]['tituloFaq']私を入手してくださいComo accedo al material del Curso?が出力されますか?

私には何が欠けていますか?

+0

なぜあなたはそれをHTMLにエコーしていますか?また、 'htmlspecialchars($ stringFaqs);'は、文字が有効なjson文字列を作らなくなるように修正しようとしています –

+0

スクリプトタグに実際のjavascriptオブジェクトとしてエコーする方が簡単でしょうか? – adeneo

+0

どうすればいいですか? – Rosamunda

答えて

0

最初に、隠されたテキストノード内からJSONをキャプチャする必要はありません。代わりに、グローバルなjavascript変数としてインライン展開します。

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

これを実行します。

+0

は 'JSON.parse'を取り除きます。もしあなたが' json_encode'からの戻り値を出力するなら、すでに有効なjavascript値を取得します。さもなければ無効なトークンエラーを与える 'JSON.parse({}) 'のようなものがあります –

+0

いずれの例でも' JSON.parse'を使うべきではありません。文字列はすでにJavaScriptであり、ページにドロップするだけで、 'JSON.parse'は文字列ではなくJavaScript配列を渡すため、死ぬでしょう。 – meagar

+0

http://www.dyn-web.com/tutorials/php-js/json/array.php下にスクロールします。 JSON.parseをエンコーディングの理由で使いたいとします。 「json_encodeの結果をJavaScript側のパーサで実行する必要は必ずしもありませんが、一般的には、 – chasez0r

関連する問題