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'...>。首先,您错过了>;-) 其次,您必须使用"\'wrap text'<input type="text"...>'没关系。但这会与 PHP 冲突,因为"它用于 PHP 字符串。因此,您必须逃避双引号:'<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 回答