2016-09-12 6 views
0

私のデータベースからPHPで取得したテキストがあり、"'のような文字があり、改行もあります。今、私はこのBackticksはモバイルブラウザでjQueryエラーを作成します

var str = `<?php echo $text; ?>`; 

のようなバッククォートを使用してjQueryそれを文字列に渡されると、私は携帯のブラウザでそれをしようとしたとき、私は携帯のブラウザではconsole.logを見ることができないけれども、それは、デスクトップブラウザで正常に動作しますが、私私のjQueryコードが機能することを拒否しているので、私はいくつかのエラーが発生していると考えていますが、上記の行をコメントアウトするとうまくいきます。私はこれをどのように修正できるか知っていてください?

+0

(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals)、文字列リテラルの新しい種類です。 ES6は新しく、一部のブラウザではサポートされていません。 – 4castle

答えて

3

JavaScriptのかなり新しい機能(2015年6月、ES2015の一部、正式に「ES6」として正式に導入されました)には、Template literalsがあります。テンプレートリテラルをサポートしていない古いJavaScriptエンジンを使用しているブラウザを使用しているのは驚くべきことではありません。

出力がに発生して、バックティックが含まれていると、それも失敗します。

ここで行うべき正しいことは、が適切にの文字列の内容をエスケープすることです。 PHPのjson_encodeは喜んでJavaScriptの互換文字列と出力がかかります、あなたのためのバージョンをエスケープ:

var str = <?php echo json_encode($text); ?>; 

$textは、インスタンスの文字列が含まれている場合:

 
Bob: Hi, my name is Bob, but people call me "Bobby;" it's a nickname. 
Wilma: Hi Bobby! 

をブラウザに到着するだろうかだろう:

[リテラルテンプレート]だ
var str = "Bob: Hi, my name is Bob, but people call me \"Bobby;\" it's a nickname.\nWilma: Hi Bobby!"; 
+0

それは素晴らしいヒントです! – Ejaz

+0

ありがとう@Crowder –

関連する問題