2013-03-27 15 views
1

我的網站有一些頁面使用jQuery和一些dojo(我們實際上正在轉向jQuery)。我需要在所有ajax請求上設置一個通用的自定義標頭,而不管它是使用jquery還是dojo。我可以做一些事情:xhr.setrequestheader在所有的ajax調用中?

$.ajaxSetup({ 
    headers: { 
     'X-app':'ios' 
    } 
}); 
dojo._xhr_orig = dojo.xhr; 
    dojo.xhr = function(/*String*/ method, /*dojo.__XhrArgs*/ args, /*Boolean?*/ hasBody){ 
     args = args || {}; 
     args.headers = args.headers || {}; 

     args.headers['X-app'] = 'ios'; 

     return dojo._xhr_orig.apply(this, arguments); 
    } 

但我需要在整個網站上做到這一點。有什麼地方可以改變XMLHTTPrequest原型來做到這一點嗎?

+0

我認爲只寫一個自定義的xhr/request函數而不是修改XMLHttpRequest會更容易。然後,您可以使用任何JS框架來實際構造具有特殊標頭或其他項目的請求。 – laupow 2013-03-29 15:52:02

回答

0

你可以嘗試這樣的事情:

$("body").bind("ajaxSend", function(elm, xhr, s){ 
      if (s.type == "POST") { 
       xhr.setRequestHeader('X-app', 'ios'); 
      } 
}); 

順便說用大寫來設置請求頭要小心,我遇到了一些問題,IE6,IE7和IE8不能正確設置它。

編輯:

這是更好(一股不不必擔心不區分大小寫):此幫助

$.ajaxSetup({ 
      beforeSend: function (jqXHR, settings) { 
      jqXHR.setRequestHeader('X-app', 'ios'); 
      } 
}); 

希望你。 此致敬禮。

相關問題