javascript - yii2 不起作用 $this->redirect

标签 javascript php web yii2

我是 yii2 的新手。当我单击按钮时,jquery 触发向 Controller 发送 ajax 请求的事件。代码如下:

$("#save").on('click', function() {
        var data = 'test';
        $.ajax({
            url: 'index.php?r=site%2Fcreate-mockup',
            type: 'POST',
            data: {dat: data},
            success: function(data) {
                console.log(data);
            }
        });
    });

在 Controller 中创建 Mockup 类的实例

 public function actionCreateMockup()
    {
      if (Yii::$app->request->isAjax)
      {
          $create_model = new Mockup();
          //filling $create_model
          return $this->redirect(Url::to(['site/saved-mockups']));
       }
     }

当我删除 $create_model = new Mockup(); 时//填充$create_model,然后就可以了。 样机.php:

<?php
namespace app\models;
use yii\base\Model;
use yii\db\ActiveRecord;

class Mockup extends ActiveRecord
{

}

?>

最佳答案

由于您使用 ajax 提交表单并期望在 ajax success 回调中返回响应,因此您可以继续使用 JavaScript 来处理其余场景,并在提交数据后重定向用户已保存。

这里有一些可以让你继续前进的东西

$("#save").on('click', function() {
    var data = 'test';
    $.ajax({
        url: 'index.php?r=site%2Fcreate-mockup',
        type: 'POST',
        data: {dat: data},
        dataType: 'JSON',
        success: function(response) {
            if(response.success){
                  window.location = response.route //redirect on success
            }else{
                 //handle errors here
            }
        }
    });
});

比在你的 Controller 中

    public function actionCreateMockup()
    {
      if (Yii::$app->request->isAjax)
      {
          $create_model = new Mockup();
          //filling $create_model
          \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
          if($create_model->load(\Yii::$app->getRequest()->post()) && $create_model->save()){
             return [
                'success'=> true,
                'route'=> Url::to(['site/saved-mockups'])
             ];
           }else{
             return [
                'success'=> false,
                'errors'=> $create_model->getErrros();
            ];
        }
       }
     }

关于javascript - yii2 不起作用 $this->redirect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293585/

相关文章:

javascript - 使用 javascript/jquery 按正确顺序插入 div 元素

javascript - 通过 jQuery 获取整个 HTML 文档,无论顶级元素如何

php - 将文件上传到服务器并将其路径放入 MySQL 变量中

php - 如何读取保存在mysql数据库中的pdf文件?

email - 在网站中匹配正则表达式电子邮件

javascript - Youtube 播放器 API 差异(Chromeless 与 IFrame)- 哪个更好?

javascript - 谷歌图表 : Move legend position

javascript - 使用 CActiveForm 从 URL 中排除空表单参数

https - 如何处理网站中应作为 https 保护的混合内容?

javascript - 浏览器 JavaScript mousedown 事件 : To detect right mouse button: Do I look at "button" or "which"?