Вывод jQuery в PHP, проблема с кавычками - PullRequest
1 голос
/ 21 ноября 2011

У меня есть это, я пытаюсь вывести в 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 ]

2 голосов
/ 21 ноября 2011

Вы также можете запретить использование одинарных и двойных кавычек, меняя одинарные на двойные, например:

$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 голос
/ 21 ноября 2011

Если вам ДЕЙСТВИТЕЛЬНО нужно вставить 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
);
1 голос
/ 21 ноября 2011
$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\"...>'.

А если серьезно, , это беспорядок.Попробуйте написать Javascript прямо в HTML-шаблоне, это избавит вас от головной боли.

1 голос
/ 21 ноября 2011

1001 * попробовать *

$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+\"']');
");
1 голос
/ 21 ноября 2011

Избегайте 'используя \' и 'используя \' символы при выводе

1 голос
/ 21 ноября 2011

Избегайте разделителя ' внутри ваших строк.

...