Вставка строки внутри JavaScript, определенного в PHP - PullRequest
0 голосов
/ 20 августа 2011

Я только что оказался в странной позиции, пытаясь вставить строку в javascript, которая определена в php.Код, который я собираюсь опубликовать, - это не тот реальный код, а ситуация, в которой я нахожусь.

$script = "
var someVar = \"<input type='text' onchange='callScript('problem here') />' \";
";

, поэтому, как вы видите, я устанавливаю переменную javascript, в которой есть элементы html.Это.Элемент html имеет событие onchange, которое установлено для вызова функции, которая принимает строку в качестве параметра.Как мне вставить этот параметр?

Ответы [ 5 ]

0 голосов
/ 20 августа 2011

В общем, держитесь подальше от addslashes. Сделайте то, что сказал Робин Уинслоу (я новичок здесь, поэтому, я думаю, я не могу ответить напрямую) и используйте json_encode.

Однако вам все равно нужно html-экранировать эту строку в JS. Посмотрите что-то вроде системы шаблонов jQuery, если вы генерируете HTML с помощью JS.

0 голосов
/ 20 августа 2011

Я думаю, что если вы вызовете addslashes() в строке перед тем, как вставить ее в переменную, у вас все получится, чтобы избежать любых возможных небезопасных символов, поэтому:

$script = "var someVar = \"<input type='text' onchange='callScript(\\\"".addslashes($problem_here)."\\\") />' \";
0 голосов
/ 20 августа 2011

Попробуйте

$script = "
var someVar = \"<input type='text' onchange='callScript(\"problem here\")' />\" ";
0 голосов
/ 20 августа 2011

В идеале ваш JavaScript должен быть внутри файла представления, поэтому вы не будете распечатывать его на PHP, более наоборот:

var jsVar = <?php echo json _encode($phpstring); ?>;

Или более короткий:

var jsVar = <?=json_encode($phpstring)?>;

Json кодирует, чтобы строка печаталась так, чтобы JS правильно ее читала.http://php.net/manual/en/function.json-encode.php

0 голосов
/ 20 августа 2011

Использовать String.fromCharCode:

$script = "
var someVar = \"<input type='text' onchange='callScript(\" + String.fromCharCode(34) + \"problem here\" + String.fromCharCode(34) + \") />' \";
";

Сгенерированный JavaScript будет:

var someVar = "<input type='text' onchange='callScript(" + String.fromCharCode(34) + "problem here" + String.fromCharCode(34) + ") />' \";

, который оценивается как someVar, являющаяся строкой

<input type='text' onchange='callScript("problem here") />' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...