Как использовать переменные PHP в качестве значений для тега <script>при рендеринге кода jQuery в моем представлении CakePHP? - PullRequest
0 голосов
/ 11 июня 2009

Я новичок в CakePhp и JQuery. Я получаю сообщение об ошибке при использовании кода CakePHP в моем JQuery.

Мой код

   <script type="text/javascript">
     $(document).ready(function(){
     var attributeid;var fieldname;
     $("#"+<?=$r['Attribute']['id'];?>).change(function () {

     fieldname=<?=$r['Attribute']['label'];?>; 
              alert(fieldname);//this show me that undefined 
             attributeid=<?=$r['Attribute']['id'];?>; 
             alert(attributeid);//But this works

    });//attribute change
});//ready function 

если я повторю ($r['Attribute']['label'];), это значение входит в мое <?php ?> Но не внутри моего JQuery.

Примечание:

attributeid=<?=$r['Attribute']['id'];?>; 
alert(attributeid);//But this works  


Error: 
Name is not defined
fieldname=name; 
alert(fieldname);

1 Ответ

10 голосов
/ 11 июня 2009

Вы не задумываетесь над тем, как это происходит, когда отображаются переменные.

Если у вас есть переменная $x с содержимым «test», выполните следующее:

var x = <?=$myvar?>;

Результатом будет:

var x = test;

Это недопустимо (если test не является переменной), потому что вам нужно заключить его в кавычки, чтобы сделать его строкой:

var x = "<?=$myvar?>";

Что затем приводит к действительному:

var x = "test";

Причина, по которой она работает с другой переменной, заключается в том, что вы выводите идентификатор, который является целым числом:

var x = <?=$myid?>;

Будет переведено на:

var x = 5;

Что совершенно верно.

При всем этом, вы должны поместить все, что вы хотите отправить в Javascript, в массив и вызвать json_encode , чтобы легко и безопасно напечатать значения. Без этого вам придется беспокоиться о том, что в строке не должно быть кавычек и тому подобного.

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