我有一个CHTML:ajax
函数可以在选择下拉列表中执行一些AJAX操作 - 我只是想做一些事情......
“在更改时,抓住所选值并将其作为参数childID
传递到网址”
然后应在
的url
部分显示以下内容
CHTML::ajax function:-
'url' => 'isAjax=1&childID=5134156'
我试图将所选的变量附加到网址上,但它不起作用 - 任何人都可以看到我做错了吗
jQuery(function($) {
$('#child-form select[name="Child[user_id]"]').bind('change', function(e){
var selected = this.value;
console.log('selected : '+selected ); // outputs an ID to the console.
<?php echo CHtml::ajax(array(
'url' => '?isAjax=1&childID='+selected,
'type' => 'post',
'update' => '#parents-sidebar',
// rest of the ajax function (quite long...)
答案 0 :(得分:0)
您不能使用javascript从dom中提取值并将其直接注入PHP代码。
来自PHP.net文档:
由于Javascript(通常)是客户端技术,而PHP是 (通常)服务器端技术,因为HTTP是“无状态” 协议,这两种语言不能直接共享变量。
CHtml::ajax()
主要是生成javascript代码的快捷方式。所以简单的解决方案就是手动编写你的javascript。这样您就可以使用selected
变量。
注意: 您可以尝试Taron Saribekyan的解决方案,发布在评论中。这个想法是javascript表达式('... + selected')将由PHP作为字符串打印,因此可以通过javascript进行评估。从理论上讲,这应该有效。
答案 1 :(得分:0)
这很明显。您已经定义了一个javascript
变量,并且您在PHP代码中使用它! <?php ?>
块内的所有内容都将在服务器上和javascript之前解释。所以,我认为你应该在你的情况下使用普通的jquery ajax方法。像这样:
$.ajax({
"url": <?php echo Yii::app()->baseUrl.'/controller/action' ?>'?isAjax=1&childID='+selected,
'type' => 'post',
...
})