Как передать строковую переменную PHP в JS из события Onclick - PullRequest
2 голосов
/ 15 декабря 2011

Это может быть простой ответ, однако я не могу понять правильный синтаксис.На странице php отображается следующее событие onclick:

$ratelink = text string...
echo '<div><span id="anything" onclick="updatePos('.$ratelink.')">Save</div>';

На моей странице JS есть функция:

function updatePos(ratelink)
{
  alert(ratelink); 
}

Моя проблема в том, что когда $ ratelink - это числопеременная пройдет без проблем.Однако, когда $ ratelink является текстовой строкой, как в приведенном выше примере, ничего не передается и предупреждение не выполняется.

Я думаю, что следующее ('. $ Ratelink.') Должно быть вдругой синтаксис для передачи текста, но я не знаю точный формат.

Ответы [ 4 ]

7 голосов
/ 15 декабря 2011

Вам необходимо заключить строку в кавычки при передаче в функцию JS, а также в PHP:

$ratelink = 'text string...';
echo '<div><span id="anything" onclick="updatePos(\''.$ratelink.'\')">Save</div>';
0 голосов
/ 15 декабря 2011

Ни один из ответов не верен. По крайней мере, не самый лучший вариант. Попробуйте использовать json_encode() для передачи любых данных из PHP в JS. Это гарантирует, что данные правильно экранированы.

var myObj = <?=json_encode(array('php' => 'array'))?>;

console.log(myObj);
0 голосов
/ 15 декабря 2011

Ваша строка должна быть заключена в кавычки ... поэтому вам нужно сделать это

echo '<div><span id="anything" onclick="updatePos(\''.$ratelink.'\')">Save</div>';

и убедитесь, что вы также экранировали строку, если в ней есть кавычки

0 голосов
/ 15 декабря 2011

попробуйте это эхо '<div><span id="anything" onclick=updatePos("'.$ratelink.'")>Save</div>'; если в переменной $ ratelink есть пробел, он должен быть заключен в строку ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...