0

我有一个CHTML:ajax功能可以在选择下拉列表中执行一些 AJAX 操作 - 我只是想做一些说明..

“在更改时,获取选定的值并将其作为childIDURL 中的参数传递”

这应该会url

CHTML::ajax function:-
 'url' => 'isAjax=1&childID=5134156'

我试图将选择的变量附加到 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...)
4

2 回答 2

0

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

来自 PHP.net 文档:

由于 Javascript(通常)是一种客户端技术,而 PHP(通常)是一种服务器端技术,并且由于 HTTP 是“无状态”协议,因此两种语言不能直接共享变量。

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

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

于 2015-10-09T14:59:41.990 回答
0

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

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