在PHP中输出jQuery,引用问题


Outputting jQuery in PHP, quotes issue

我正在尝试用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变量。

有人能帮忙吗?

您还可以通过将单引号换成双引号来防止单引号和双引号绊倒您,例如:

$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+']">');

转义字符串中的'分隔符。

在输出时转义"using'''"answers"using''"字符

尝试

$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+'"']');
");
$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字符串。因此,你必须逃离双重困境:'<input type='"text'"...>'

但说真的,这是一团糟。试着直接在HTML模板中编写Javascript,它会让你省去很多头痛。

如果您确实需要将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
);