使用Yii2的POST方法无法将Javascript数据发送到操作

时间:2017-06-19 06:09:07

标签: javascript php json ajax yii2-advanced-app

我遇到了问题,我通过AJAX从Javascript连接到我的操作,并通过POST发送数据。我声明URL“/ controller / action”并且它没有连接到动作,而AJAX给了我“parsererror”。奇怪的是,我做了一个相同的但是接受了同样的行动,并没有给我错误,我工作得很好

我的JS文件

function save_account(){
$.ajax({
    url: '/user/save-account',
    type: 'POST',
    dataType: 'json',
    data: {
        'id_user': xxx,
        'email': xxx,
        'name': xxx,
        'type': xxx
    },
    contentType: 'application/x-www-form-urlencoded;charset=ISO-8859-15',
    async: false,
    success: function (response) {
    },
    error : function (request, error) {
        console.log(error);
    }
});

}

我在控制器中的动作

public function actionSaveAccount(){
    $model= new \frontend\models\ProfileForm();
    if (Yii::$app->request->isAjax) {
        if ($model->load(Yii::$app->request->post())){
            if($profile === $model->saveProfile()){
                // SAVED
            }else{
                // ERROR SAVED
            }
        }
    }
}

我的网址设置

'urlManager' => [
            'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        ],
    ],

1 个答案:

答案 0 :(得分:0)

您正在向具有超级(-)的网址发送请求,而您用于该路由的正则表达式是w字符,根据regex101使用对于以下内容:

  

\ W

     

匹配任何字母,数字或下划线。相当于[a-zA-Z0-9 _]

将URL更改为save_account,它将起作用。