我使用ajax来保存表单。但是当我保存数据时,数据会多次保存到数据库中。
我在这里分享我的控制器和表格,请帮助我们。
控制器
public function actionCreate()
{
$model=new Comments;
// Uncomment the following line if AJAX validation is needed
$this->performAjaxValidation($model);
if(isset($_POST['Comments']))
{
$model->attributes=$_POST['Comments'];
// echo '<pre>';print_r($model->attributes);die();
$valid = $model->validate();
if($valid){
if($model->save()){
echo CJSON::encode(array(
'status'=>'success'
));
}
}else{
$error =CActiveForm::validate($model);
if($error != '[]')
echo $error;
Yii::app()->end();
}
}
// $this->render('create',array(
// 'model'=>$model,
// ));
}
_form 我这里只给出了ajax方法来保存
<?php
echo CHtml::ajaxSubmitButton('Save',CHtml::normalizeUrl(array('Comments/create','render'=>true)),
array(
'dataType'=>'json',
'type'=>'post',
'success'=>'function(data){
$("#Comments_email").val("");
$("#AjaxLoader").hide();
if(data.status == "success"){
$("#formResult").html("Comment Submitted");
$("#formResult").css({"color":"red"})
$("#comments-form")[0].reset();
}else{
$.each(data, function(key, val){
$("#comments-form #"+key+"_em_").text(val);
$("#comments-form #"+key+"_em_").show();
});
}
}',
'beforeSend'=>'function(){
$("#AjaxLoader").show();
}'
),array('id'=>'submit','class'=>'btn btn-success'));
?>
答案 0 :(得分:0)
Hai朋友我找到了解决这个问题的方法 我在这里分享答案以供进一步参考。
出现此问题是因为每次使用ajaxSubmitbutton显示视图时,都会创建一个事件处理程序。 因此,解决这个问题的方法是在使用它之后销毁处理程序。
<强> _form 强>
请在beforeSend()中添加一个undelegate(),如下所示
'beforeSend'=>'function(){
$(\'body\').undelegate(\'#submit\', \'click\');
$("#AjaxLoader").show();
}'
完整的代码将是这样的:
<?php
echo CHtml::ajaxSubmitButton('Save',CHtml::normalizeUrl(array('Comments/create','render'=>true)),
array(
'dataType'=>'json',
'type'=>'post',
'success'=>'function(data){
$("#Comments_email").val("");
$("#AjaxLoader").hide();
if(data.status == "success"){
$("#formResult").html("Comment Submitted");
$("#formResult").css({"color":"red"})
$("#ajax-comments-form")[0].reset();
}else{
$.each(data, function(key, val){
$("#ajax-comments-form #"+key+"_em_").text(val);
$("#ajax-comments-form #"+key+"_em_").show();
});
}
}',
'beforeSend'=>'function(){
$(\'body\').undelegate(\'#submit\', \'click\');
$("#AjaxLoader").show();
}'
),array('id'=>'submit','class'=>'btn btn-success'));
感谢您的支持