2014-05-15 128 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