簡體   English   中英

在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 \\'和“ 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字符串。 因此,您必須轉義兩個qoutes: '<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
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM