Php YII2:使用AJAX提交表单并返回成功消息
我正在使用以下代码在另一个视图中呈现contact us表单Php YII2:使用AJAX提交表单并返回成功消息,php,ajax,yii2-advanced-app,Php,Ajax,Yii2 Advanced App,我正在使用以下代码在另一个视图中呈现contact us表单 <?php echo $this->render('contact', [ 'model' => $contactModel, ]); ?> 到表单标题。 我的控制器代码如下所示 $model = new ContactForm(); $data = ""; if (Yii::$app->request->i
<?php echo $this->render('contact', [
'model' => $contactModel,
]); ?>
到表单标题。
我的控制器代码如下所示
$model = new ContactForm();
$data = "";
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post()) && $model->validate()) {
if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');
$data = "success";
} else {
Yii::$app->session->setFlash('error', 'There was an error sending email.');
$data = "Error";
}
}else{
$data = false;
}
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return $data;
当我试图提交表单时,验证工作非常完美,但是当所有字段都正确输入时,页面会重新加载,ajax请求会在firebug控制台中显示两次。我希望页面停留在表单上,从控制器获取并显示成功或错误消息。您应该提供客户端代码。您应该提供客户端代码。
$model = new ContactForm();
$data = "";
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post()) && $model->validate()) {
if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');
$data = "success";
} else {
Yii::$app->session->setFlash('error', 'There was an error sending email.');
$data = "Error";
}
}else{
$data = false;
}
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return $data;