Javascript Ajaxsubmitbutton未传递ID

Javascript Ajaxsubmitbutton未传递ID,javascript,php,ajax,yii,Javascript,Php,Ajax,Yii,我在使用引导模式更新数据时遇到问题 在CGridView selectionChanged上,它将触发一个函数来显示模式对话框表单并将数据插入表单 以下是我的观点: <?php $this->widget('customCGridView', array( 'id'=>'contactperson-grid', 'itemsCssClass' => 'table table-borde

我在使用引导模式更新数据时遇到问题

在CGridView selectionChanged上,它将触发一个函数来显示模式对话框表单并将数据插入表单

以下是我的观点:

<?php
    $this->widget('customCGridView', array(
                    'id'=>'contactperson-grid',
                    'itemsCssClass' => 'table table-bordered',
                    'selectionChanged'=>'showmodal',
                    'dataProvider' => $contactperson->search(),
                    'emptyText' => '',
                    'enableSorting' => false,
                    'htmlOptions' => array('class' => ' '),
                    'columns' => array('nama', 'jabatan')
    ));
?>
现在,问题是:

当我单击更新表单上的更新按钮时,我需要将ID传递给我的操作:

public function actionPersonUpdate($id) {
    $model2=$this->loadModel2($id);                    

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['SupplierContactPersonTable']))
    {
        if($model2 === null) {
            throw new CHttpException(404, 'The requested page does not exist.');
        }

        $model2->attributes=$_POST['SupplierContactPersonTable'];
        $model2->save();
    }
}
要传递此值,我在表单上使用AjaxButton:

<div id="contact-person-modal">
<?php
    $form = $this->beginWidget('CActiveForm', array(
                      'id' => 'suppliercontactmodalform',
                      'htmlOptions' => array(
                                          'class' => 'smart-form',
                                          'novalidate' => '1',),
                      'enableAjaxValidation' => false,));
?>

...

<footer>
    <button type="button" class="btn btn-labeled btn-danger cancel-button" style="float: left">
        Hapus Pengguna
    </button>
    <?php
       echo CHtml::ajaxButton('Update', Yii::app()->createUrl('suppliertable/personupdate',array('id'=>$contactperson->contact_person_id)), array('type'=>'POST'), array('type'=>'submit',"class" => "btn btn-primary"));

    ?>
    <button type="button" class="btn btn-default" data-dismiss="modal">
    Batal
    </button>    
</footer>
...
如您所见,没有传递ID

但是,如果我使用静态参数值:

echo CHtml::ajaxButton('Update', Yii::app()->createUrl('suppliertable/personupdate',array('id'=>'5')), array('type'=>'POST'), array('type'=>'submit',"class" => "btn btn-primary"));
传递的ID为:

POST http://localhost/webapp/index.php/suppliertable/personupdate/5
所以,我认为问题在这里,不是输出值:

$contactperson->contact_person_id
以下是从Yii生成的jQuery:

jQuery('body').on('click','#yt0',function({
    jQuery.ajax({
        'type':'POST',
        'url':'/webapp/index.php/suppliertable/personupdate id=',
        'cache':false,
        'data':jQuery(this).parents("form").serialize()
    });
    return false;
});

谢谢你的帮助:)

我找到了解决方案

如果有人有相同的问题,我需要更新actionPersonView方法:

public function actionPersonView($id) {
            if (Yii::app()->request->isAjaxRequest) {
                Yii::app()->clientScript->scriptMap['jquery.js'] = false;
                Yii::app()->clientScript->scriptMap['jquery.min.js'] = false;   
                $contactperson = SupplierContactPersonTable::model()->findByPk($id);

                if ($contactperson === null)
                    throw new CHttpException(404, 'The requested page does not exist.');

                $this->renderPartial('updateForm', array('contactperson'=> $contactperson),false,true);              
                Yii::app()->end();
            }
    }
我需要添加actionPersonView方法

$this->renderPartial('updateForm', array('contactperson'=> $contactperson),false,true);

Yii::app()->clientScript->scriptMap['jquery.js'] = false;
Yii::app()->clientScript->scriptMap['jquery.min.js'] = false;

为了防止脚本被多次执行。

请检查“网络”选项卡。url地址包含一个
?id=
,但它使用的是
POST
,url解析将用于GET。我们需要通过检查网络选项卡并查看
数据的值来查看
POST
请求是否正在命中服务器。这是来自网络选项卡的结果:
POST personupdate?id=
和来自参数选项卡的:
id
@ohgowhy更新了代码,也许更容易识别我的问题:)尝试将url:“”更改为url:“”@ViPiN Hv完成了,但结果仍然是
POSThttp://localhost/webapp/index.php/suppliertable/personupdate/ 400错误请求
。我更新了密码
public function actionPersonView($id) {
            if (Yii::app()->request->isAjaxRequest) {
                Yii::app()->clientScript->scriptMap['jquery.js'] = false;
                Yii::app()->clientScript->scriptMap['jquery.min.js'] = false;   
                $contactperson = SupplierContactPersonTable::model()->findByPk($id);

                if ($contactperson === null)
                    throw new CHttpException(404, 'The requested page does not exist.');

                $this->renderPartial('updateForm', array('contactperson'=> $contactperson),false,true);              
                Yii::app()->end();
            }
    }
$this->renderPartial('updateForm', array('contactperson'=> $contactperson),false,true);
Yii::app()->clientScript->scriptMap['jquery.js'] = false;
Yii::app()->clientScript->scriptMap['jquery.min.js'] = false;