我正在尝试用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
);