0
我使用了ajax來保存表單,但是當我保存數據時,數據被多次保存到數據庫。
我在這裏分享我的控制器和窗體,請幫助我。在yii中使用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'));
?>
查看此wiki:http://www.yiiframework.com/wiki/388/ajax-form-submiting-in-yii/ – Criesto
您是否在瀏覽器上進行了調試(Chrome - 檢查元素/網絡),以便請求不會再次到達服務器? –
@RobertGabriel我使用檢查元素檢查了調試。有時它觸發一次有時不止一次。 –