在PHP中输出jQuery,引用问题

时间:2011-11-21 12:16:07

标签: php jquery quote

我有这个我想用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变量。

任何人都可以帮忙吗?

6 个答案:

答案 0 :(得分: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+']">');

答案 1 :(得分:1)

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

答案 2 :(得分:1)

在输出时退出'使用\'和“使用\”字符

答案 3 :(得分: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+\"']');
");

答案 4 :(得分: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字符串。因此,你必须逃脱双重问题:'<input type=\"text\"...>'

但严重,这是一团糟。尝试直接在HTML模板中编写Javascript,它会为你节省很多麻烦。

答案 5 :(得分: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
);