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

Adding a parameter to the url in a Yii AJAX call

我有一个 CHTML:ajax 函数可以在 select 下拉菜单中做一些 AJAX 的事情 - 我只是想做一些事情说..

"on change, grab the selected value & pass that as param childID in the URL"

这应该会在

url 部分显示以下内容
CHTML::ajax function:-
 'url' => 'isAjax=1&childID=5134156'

我试图将变量 selected 附加到 url 但它不起作用 - 谁能看出我做错了什么

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...)

您不能使用 javascript 从 dom 中提取值并将其直接注入 PHP 代码。

来自 PHP.net 文档:

Since Javascript is (usually) a client-side technology, and PHP is (usually) a server-side technology, and since HTTP is a "stateless" protocol, the two languages cannot directly share variables.

CHtml::ajax() 主要是生成 javascript 代码的快捷方式。因此,简单的解决方案就是手动编写 javascript 。这将允许您使用 selected 变量。

注意: 您可以尝试在评论中发布的 Taron Saribekyan 的解决方案。这个想法是 javascript 表达式 ('...+selected') 将由 PHP 作为字符串打印,因此由 javascript 计算。理论上,这应该有效。

这是显而易见的。您已经定义了一个 javascript 变量,并且您正在 php 代码中使用它! <?php ?> 块内的所有内容都将在服务器上和 javascript 之前解释。所以,我认为你应该在你的情况下使用正常的 jquery ajax 方法。像这样:

$.ajax({
   "url": <?php echo Yii::app()->baseUrl.'/controller/action' ?>'?isAjax=1&childID='+selected,
    'type' => 'post',
     ...
})