在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