解决yii2 ajax post提交报错 Bad Request #400--Unable to verify your data submission方案
原因分析
是因为yii2.0的防csrf问题,没有csrftoken是提交不成功的
第一种解决办法是关闭Csrf
控制器里面关闭
public $enableCsrfValidation = false;
或者
public function init(){
$this->enableCsrfValidation = false;
}
第二种解决办法是在form表单中加入隐藏域
可以自己加个csrftoken隐藏域,和其他数据一起传到控制器中。
<input type="hidden" name="_csrf" id="_csrf" value="<?= Yii::$app->request->getCsrfToken() ?>">
将name为_csrf的值传过去 这里是重点,我刚开始传的是name=_csrf ,如果不成功,接着找原因,原来,这儿的token名一定要和你框架中配置文件中定义的那个参数名一致。 main.php配置文件
第三种解决办法是在AJAX中加入_csrf字段
var csrfToken = $('meta[name="csrf-token"]').attr("content");
$.ajax({
type: 'POST',
url: url,
data: {_csrf:csrfToken},
success: success,
dataType: dataType
});