在Yii AJAX调用中向url添加参数

时间:2015-10-09 11:57:46

标签: javascript jquery ajax yii yii1.x

我有一个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...)

2 个答案:

答案 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',
     ...
})