在CustomerController
,我有create
行動:在Yii框架中是否有任何內置的方式來啓用AJAX表單提交?
public function actionCreate() {
$model = new Customer;
$this->performAjaxValidation($model, 'customer-form');
//only support ajax saving
if (isset($_POST['Customer']) && Yii::app()->getRequest()->getIsAjaxRequest()) {
$model->setAttributes($_POST['Customer']);
$saveSuccess = $model->save();
if ($saveSuccess) {
//should echo a success message
}
else {
//should echo error messages
}
Yii::app()->end();
}
$this->render('create', array('customer' => $model));
}
在視圖中,我使用的CActiveform:
$form = $this->beginWidget('CActiveForm', array(
'id' => 'customer-form',
'enableAjaxValidation' => true,
'clientOptions'=>array(
'validateOnSubmit'=>false
)
)
);
正如你所看到的,我設置enableAjaxValidation
爲真,但我設置客戶端選項validateOnSubmit
爲false。
如果我將其設置爲true,當表單提交,它將第一發送AJAX POST請求發送到服務器,然後服務器將返回錯誤消息(如果有的話)JSON格式,CActiveForm將顯示錯誤在視圖中自動摘要並阻止表單提交。
如果沒有發現錯誤,表單將執行秒 POST請求(這是非AJAX)並實際提交表單。
但這不是我以後的行爲。
理想情況下,我想有一個單個 AJAX POST請求,以便當表單提交時,服務器將返回成功或錯誤消息,CActiveForm將自動顯示它們。
這是Yii內置的東西還是我必須編寫自己的代碼呢?
一定要使用「Yii :: app() - > request-> isAjaxRequest」來檢查請求是否是Ajax請求。 – 2012-01-08 07:07:33