在 PHP 中输​​出 jQuery,引号问题

发布于 2024-12-17 06:03:22 字数 319 浏览 1 评论 0 原文

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

有人可以帮忙吗?

I have this i'm trying to output in 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+']'');
");

But i'm unsure about quotes and javascript variables as well.

Can anyone help out?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

┊风居住的梦幻卍 2024-12-24 06:03:22

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

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

You can also stop single and double quotes from tripping you up by swapping singles for doubles, e.g.:

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

Would output:

var searchTerm = $(this).html();
var searchId = $(this).attr('data-tag');
$('.tags').append('<input type="text" value='+searchTerm+' name="data[Tag][tags]['+searchId+']">');
日裸衫吸 2024-12-24 06:03:22

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

Escape the ' delimiter inside of your strings.

只是偏爱你 2024-12-24 06:03:22

输出时转义 ' using \' 和 " using \" 字符

Escape ' using \' and " using \" characters while outputting

输什么也不输骨气 2024-12-24 06:03:22

尝试

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

try

$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+\"']');
");
装纯掩盖桑 2024-12-24 06:03:22
$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+']'');

这里的问题是 '。 code> ;-) 其次,您必须使用 "\' 来换行文本'' 没问题。但这会与 PHP 发生冲突,因为 " 用于 PHP 字符串。因此,您必须转义双 qoutes:''

但是说真的,这太乱了。尝试直接在 HTML 模板中编写 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+']'');
");

That is your code. Inside the PHP "" you must write single quotes ' or escape double quotes \". You have chosen to use single quotes, which is fine, except the generated JS code must also follow these rules.

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

The problem here is '<input type='text'...>. First, you missed the > ;-) Second, you must either use " or \' to wrap text. '<input type="text"...>' is okay. But this would conflict with PHP, since " was used for the PHP string. Therefor you'd have to escape the double qoutes: '<input type=\"text\"...>'.

But seriously, this is a mess. Try to write Javascript directly in the HTML template, it will save you so much head ache.

噩梦成真你也成魔 2024-12-24 06:03:22

如果您确实需要将 JS 放入 PHP 文件中(这很糟糕,请将其保存在外部文件中,然后包含它),请使用 heredoc 语法(或 nowdoc< /a>):

$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
);

If you REALLY need to put JS in your PHP files (it's bad, save it in an external file and then include it), use the heredoc syntax (or 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
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文