1

私はこれをPHPで出力しようとしています:

$this->Js->buffer("
    var searchTerm = $(this).html();
    var searchId = $(this).attr('data-tag');
    $('.tags').append('<input type='text' value='+searchTerm+' name='data[Tag][tags]['+searchId+']'');
");

しかし、引用符とjavascript変数についてもよくわかりません。

誰でも助けてもらえますか?

4

6 に答える 6

2

また、シングルをダブルに交換することで、一重引用符と二重引用符がつまずくのを防ぐことができます。例:

$this->Js->buffer("
    var searchTerm = $(this).html();
    var searchId = $(this).attr('data-tag');
    $('.tags').append('<input type=\"text\" value='+searchTerm+' name=\"data[Tag][tags]['+searchId+']\">');
");

出力します:

var searchTerm = $(this).html();
var searchId = $(this).attr('data-tag');
$('.tags').append('<input type="text" value='+searchTerm+' name="data[Tag][tags]['+searchId+']">');
于 2011-11-21T12:28:58.880 に答える
1

'文字列内の区切り文字をエスケープします。

于 2011-11-21T12:17:29.943 に答える
1

出力中に「\」を使用して「エスケープ」および「\」文字を使用して「エスケープ」

于 2011-11-21T12:18:34.857 に答える
1

試す

$this->Js->buffer("
    var searchTerm = $(this).html();
    var searchId = $(this).attr('data-tag');
    $('.tags').append('<input type='text' value='\"+searchTerm+\"' name='data[Tag][tags]['\"+searchId+\"']');
");
于 2011-11-21T12:20:43.630 に答える
1
$this->Js->buffer("
    var searchTerm = $(this).html();
    var searchId = $(this).attr('data-tag');
    $('.tags').append('<input type='text' value='+searchTerm+' name='data[Tag][tags]['+searchId+']'');
");

それがあなたのコードです。PHP 内では、""単一引用符を記述する'か、二重引用符をエスケープする必要があります\"。単一引用符を使用することを選択しましたが、これは問題ありませんが、生成された JS コードもこれらの規則に従う必要があります。

$('.tags').append('<input type='text' value='+searchTerm+' name='data[Tag][tags]['+searchId+']'');

ここでの問題は'<input type='text'...>. >最初に、あなたは;-)"を逃しまし\'text'<input type="text"...>'大丈夫だ。しかし、これは"PHP 文字列に使用されているため、PHP と競合します。そのため、二重の qoutes: をエスケープする必要があります'<input type=\"text\"...>'

しかし、真剣に、これは混乱です。HTML テンプレートに Javascript を直接記述してみてください。

于 2011-11-21T12:32:38.107 に答える
1

どうしても JS を PHP ファイルに入れる必要がある場合 (それは悪いことです。外部ファイルに保存してからインクルードします)、次のheredoc構文 (またはnowdoc)を使用します。

$this->JS->buffer(<<<EOF
    var searchTerm = $(this).html();
    var searchId = $(this).data('tag');
    $('.tags').append('<input type="text" value="'+searchTerm+'" name="data[Tag][tags][' +searchId+']"');
EOF
);
于 2011-11-21T12:38:22.920 に答える