Php YII2:使用AJAX提交表单并返回成功消息

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

我正在使用以下代码在另一个视图中呈现contact us表单

<?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;