我遇到了问题,我通过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>',
],
],
答案 0 :(得分:0)
您正在向具有超级(-
)的网址发送请求,而您用于该路由的正则表达式是w
字符,根据regex101使用对于以下内容:
\ W
匹配任何字母,数字或下划线。相当于[a-zA-Z0-9 _]
将URL更改为save_account,它将起作用。