2011-04-18 143 views
6

我需要將'授權'請求標頭設置爲httpXMLRequest。在網格的定義我試圖通過ajaxGridOptions設置如下所示:如何設置jqGrid的ajax對象的請求標頭

ajaxGridOptions: { Authorization: 'Basic YWRtaW5AZGVmYXVsdC5jb206YWRTwa6=' } 

,並使用beforeSend事件類似如下:

beforeSend: function(jqXHR, settings) { 
    jqXHR.setRequestHeader("Authorization", 'Basic YWRtaW5AZGVmYXVsdC5jb206YWRTwa6='); 
        } 

上述工作對我來說都不是。什麼是正確的語法?

謝謝!

回答

15

您可以使用定義爲以下的jqGrid的的例子loadBeforeSend事件處理程序:

loadBeforeSend: function(jqXHR) { 
    jqXHR.setRequestHeader("Authorization", 'Basic YWRtaW5AZGVmYXVsdC5jb206YWRTwa6='); 
} 
+1

我做請看Oleg解決方案在firebug中正確設置的請求頭。 – xueru 2011-04-19 03:35:02

+1

也許我應該爲此另外設置一個線程,但即使基本令牌是絕對正確的,我也會收到401錯誤。如果我沒有在ajaxOptions中設置content-type,那麼在設置ajaxGridOptions:{contentType:'application/json'}後,我會在服務器端獲得'匿名用戶',那麼我會返回401。我迷路了... – xueru 2011-04-19 03:44:45

+1

我曾發佈[新線程](http://stackoverflow.com/questions/5711433/ajax-configuration-issues-for-jqgrid) – xueru 2011-04-19 04:01:58

0

今天的另一種選擇是統一設置標題爲所有的AJAX請求:

$.ajaxSetup({ 
    headers : { 
     'Authorization' : 'Basic YWRtaW5AZGVmYXVsdC5jb206YWRTwa6=' 
    } 
}); 
+0

這似乎不適用於我的情況。我添加這個全局處理程序,它適用於任何$ .ajax請求,但不適用於jqGrid的任何內容。 – Dan 2017-02-13 16:22:36