Javascript Ajaxsubmitbutton未传递ID
我在使用引导模式更新数据时遇到问题 在CGridView selectionChanged上,它将触发一个函数来显示模式对话框表单并将数据插入表单 以下是我的观点: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
<?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;