Php эхо-javascript с переменными

есть вопрос о сценарии эха php, который имеет ссылку на javascript с некоторыми переменными. Мне нужно знать формат эха, чтобы он работал правильно. Может ли кто-нибудь пролить свет на это? Мой код размещен ниже

echo "<a href='javascript: toggle('variable1', 'variable2')'><label1 for='nameEditor'>Manage</label1></a>";

Теперь, когда вы наводите курсор на ссылку, она просто показывает javascript:toggle( Теперь я пробовал несколько вещей, и я все еще не могу заставить ее работать. У кого-нибудь есть какие-либо предложения?


person awmayhall    schedule 29.01.2011    source источник


Ответы (3)


Предполагая, что variable1 и variable2 - это биты PHP, которые вы хотите вставить в javascript, тогда

echo "<a href='javascript: toggle('$variable1', '$variable2')'><label1 for='nameEditor'>Manage</label1></a>";

Однако имейте в виду, что если какая-либо из этих переменных содержит метасимволы Javascript, такие как одинарная кавычка, вы нарушите сценарий с синтаксической ошибкой (подумайте об этом как о той же ситуации, что и SQL-инъекция).

Чтобы быть уверенным, что содержимое переменной станет допустимым Javascript, вам нужно сделать что-то вроде:

<script type="text/javascript">
    var variable1 = <?php echo json_encode($variable1); ?>;
    var variable2 = <?php echo json_encode($variable2); ?>
</script>

<a href="javascript:toggle(variable1, variable2)...">...</a>
person Marc B    schedule 29.01.2011

попробуйте так:

echo "<a href=\"javascript: toggle('variable1', 'variable2')\"><label1 for='nameEditor'>Manage</label1></a>";

вы должны экранировать \ кавычки

person FeRtoll    schedule 29.01.2011
comment
После javascript:toggle не должно быть пробела. - person stealthyninja; 30.01.2011
comment
Спасибо, это было то, что я искал на самом деле. Я должен был прямо спросить, как разбить кавычки. Огромное спасибо! - person awmayhall; 31.01.2011

Это потому, что вы смешиваете свои кавычки, которые видит браузер. Сделай это:

echo "<a href=\"javascript: toggle('variable1', 'variable2')\"><label1 for='nameEditor'>Manage</label1></a>";

Если вы избегаете двойных кавычек (\"), все будет в порядке. Сам браузер видит '''' (все одинарные кавычки), поэтому вам нужно сохранить "''" (двойные, одинарные, одинарные, двойные) в вашем атрибуте элемента html, независимо от PHP (за исключением экранирования).

person Jared Farrish    schedule 29.01.2011