我有一個表單我想通過ajax發佈。我不確定在何處形成發帖去? ajax鏈接調用控制器,小部件呈現視圖...但我不太確定了。現在它不是發佈;它不去「成功」。它會發布的唯一方式是當我在窗口小部件中做$model->save()
,這是不正確的..或者我粘貼從控制器到部件的所有內容?那麼ajax鏈接將如何從視圖中調用?在小部件或控制器中發佈ajax表單yii
我想檢查帖子是否已發佈。我知道我也可以通過自定義模型驗證來完成,無論哪種方式,它都無法正確發佈。
這裏的控制器:
$model=new Review;
$this->performAjaxValidation($model);
$user_id = Yii::app()->user->user_id;
$prod_id= Yii::app()->getRequest()->getQuery('id');
$model->user_id = $user_id;
$model->prod_id= $prod_id;
$criteria = new CDbCriteria;
$criteria->compare('prod_id',$prod_id,true);
$criteria->compare('user_id',$user_id,true);
$record = $model->findAll($criteria);
$model->attributes=$_POST['Review'];
if(empty($record))
{
//stuff..
$model->save();
echo CJSON::encode(
array('status'=>'success',
'star'=>$model->star,
//stuff..
));
return $model->review;
}
elseif(!empty($record))
{echo CJSON::encode(
array('status'=>'dup'
));
}
else echo CJSON::encode(
array('status'=>'error'
));
Yii::app()->end();
這裏是我的ajaxbutton
<?php echo CHtml::ajaxSubmitButton (' Submit Review',
CHtml::normalizeUrl(array('review/ajaxComment','render'=>true)),
array (
'type' => 'POST',
'dataType' => 'json',
'success' => 'function(data){
if(data.status == "success"){
if(data.star != undefined){
document.getElementById("review-form").reset();
$("input[type=radio]","#review-form").rating("select",0);
for (i=0;i<data.star; i++){
$("#star").append("<i class=\"fa fa-star\"></i>");
}
$(".bubble").css("display","block");
}
}else if(data.status == "dup"){alert("duplicate");}
}else
}{alert("Error Posting")};
}',
'error'=> 'function(xhr, status, error) {alert(xhr.responseText);}',
)
)
?>
沒有太多在我的窗口小部件,只是呈現形式。
當你說「我不確定在哪裏會形成張貼去?」時,你是什麼意思? – Jonnny
它是在小部件還是控制器? – JamAndJammies