2016-07-13 4 views
0

したがって、私はPHPを通してフェッチする必要があるデータを持っています。一重引用符を含むJSONは構文エラーを発生させます

Uncaught SyntaxError: Unexpected identifier 

ページのソースを見て:

$json = json_encode($requirements); 
echo "<script> 
     var myvar = '<?php echo $json; ?>'; 
     </script>"; 

データはChromeで構文エラーを与える単一引用符が含まれています。このデータは、値をエコーの.phpファイル内のjavascriptの変数に保存する必要がありますエラーによってのようなもの:アップ「ドン "」」までの文字列全体が赤である

var myvar = '<?php echo {"data":{"data":{"1":{"description":"Don' t}}}}; ?>'; 

。 0

json_encodeを失敗から守る正しい方法は何ですか(データをjsに直接呼び出すことは別です)。

{"data":{"data":{"1":{"description":"Don\'t}}}} 

それとも、あなたは試してみてください、あなたは二重引用符をエスケープする必要がaddslashes機能

+0

あなたはそれを文字列として使用するもしかして、またはそれはオブジェクトリテラルとして解釈されるために、例えば後で 'JSON.parse'を呼び出す必要はありませんでしょうか?後者が引用符で囲んでいない場合 –

+0

引用符で囲まれていないと、予期しない "<"に関する別のエラーが発生します。私は以下の答えを受け入れました。 – tjarles

答えて

1

var myvar = "<?php echo '{\"data\":{\"data\":{\"1\":{\"description\":\"Don\'t}}}}'; ?>"; 
alert(myvar) 
+0

addslashesの使用が効果的でした!ありがとう! W3では、PHPはデフォルトでGET、POST、COOKIEのすべてのデータに対してaddslashes()を実行します。私は、このデータがSQLクエリに応答している以外にどのように受け取られているのか不明です。 – tjarles

0

を使用することができますPHPを使用しているとして:あなたはバックスラッシュ\を使用することにより、たとえば、その後、'文字をエスケープする必要が

1

また、同じ問題が発生しました。&二重引用符。 二重引用符「&」を変更すると簡単に解決できます。以下の例を確認してください。

$array = array(
     "data" => array("data" => array ("desc" => "don't")) 
     ); 

$json = json_encode($array);   

echo "<script> 
     var myvar = ".$json."; 
     console.log(myvar); 
     </script>"; 
関連する問題