Yii2表单提交默认需要验证CSRF,如果CSRF验证不通过,则表单提交失败,解决方法如下:
第一种解决办法是关闭Csrf
public $enableCsrfValidation = false;
第二种解决办法是在form表单中加入隐藏域(如果是高级版的name值分前后台区分)
<input type="text" name="_csrf-frontend" value="<?= Yii::$app->request->csrfToken ?>" />(前台实例)
第三种解决办法是在AJAX中加入_csrf字段
var csrfToken = $('meta[name="csrf-token"]').attr("content");
$.ajax({
type: 'POST',
url: url,
data: {_csrf:csrfToken},
success: success,
dataType: dataType
});
$.ajax({
url:'<?php echo Url::to(['login/register-do']);?>',
type: 'POST',
data: formData,
headers: {
"<?php echo yii\web\Request::CSRF_HEADER; ?>" : "<?php echo Yii::$app->request->csrfToken;?>" //csrf
},
//这两个设置项必填
contentType: false,
processData: false,
success:function(data){
// console.log(data);
layer.msg(data.msg,{icon:data.code});
if(data.code == 1){
window.location.href="<?php echo Url::toRoute(['/login/login']);?>";
}
}
})