2014-05-15 125 views
0
function facebookAuth() { 
    $.ajax({ 
     url: 'index.php?r=account/fbauthorize', 
     type: 'GET' 
    }); 
} 

这是一个简单的函数,我写的只是调用该函数在控制器中,GET类型工作正常,但文章没有。给我这个错误“错误的请求(#400):无法验证您的数据提交。”Ajax请求yii2控制器功能

这与yii2中的CSRF验证有关,但我无法解决它。

+0

见http://stackoverflow.com/questions/18597894/yii-ajax-request-csrf-can-not-be-verified –

回答

4

有两个重要步骤:

1)注册您的js文件如下:

$this->registerJsFile(Yii::$app->homeUrl . 'js/test.js', [JqueryAsset::className()]); 

2)在Ajax请求您需要发布以下与数据一起值:

yii.getCsrfParam(): yii.getCsrfToken() 

CSRF是一种安全功能,可在控制器中禁用,但不推荐。

+0

嗨,抱歉,对于迟到的回复,我不知道在哪里注册我的文件。在我的意思是什么文件。 – tareq

+0

你必须在你的视图文件中重新调用js,并且js/test.js的路径具有完全路径作为webroot/yourproject/frontend/web/js/test.js。告诉我,如果你不明白 – Kshitiz

+0

谢谢你,我从昨天开始工作,你有很大的帮助,谢谢。 – tareq

0

这两行添加到您的代码

contentType: "application/json; charset=utf-8", 
dataType: "json", 

这将是

$.ajax({ 
    url: 'index.php?r=account/fbauthorize', 
    type: 'GET', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
}); 


享受:)

+0

这是行不通的。 请问你可以详细说明这个应该做什么? 我也说过,GET类型工作正常,这是我有麻烦的POST类型! – tareq

+0

阅读本文http://stackoverflow.com/questions/4156991/jquery-ajax-returns-400-bad-request – Anri