2011-08-03 76 views
1

我正在開發使用dojo和Java EE的單頁Web應用程序。如何向每個Ajax請求添加參數?

simplified architecture

與使用dojox.data.JsonRestStore後端的客戶端腳本進行數據交換。

我想爲每個AJAX請求提供會話ID。

我知道,你可以使用AJAX設置

$.ajaxSetup({ 
    beforeSend: function() { 
     //add parameters to request... 
    } 
}); 

有沒有辦法設置道場以類似的方式在JQuery中實現這一目標?

+1

只需將其添加到URL字符串&sid = xxxxx或傳遞到dojo.xhrPost(它將顯示爲POST數據)的「contents」屬性中即可。或者,將瀏覽器計算機上的會話標識另存爲cookie會出現什麼問題?然後它會以每個請求作爲cookie發送。 –

+0

做到了!使一切都變得更加容易:D – Zounadire

回答

0

把它放在網址:

$.ajaxSetup({ 
    url: "/yourcode?sessionId=" + sessionId; 
}); 
+0

嗨Diodeus,其實我正在尋找一個Dojo唯一的解決方案。 – Zounadire

1

我不認爲有一個明確的掛鉤不幸啓用此。一種方法來解決這個問題(未測試,而這不是太漂亮,但應該做你想要什麼):

define("my.xhr_fixer", ["dojo/xhr"], function(dojo){ 

(function() { 
    dojo._xhr_orig = dojo.xhr; 
    dojo.xhr = function(/*String*/ method, /*dojo.__XhrArgs*/ args, /*Boolean?*/ hasBody){ 
     args = args || {}; 
     args.content = args.content || {}; 

     args.content['sessionId'] = mySessionId; 

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

嘿mrtom,謝謝你的提示,但我轉向了Stephen提到的cookie方法。無論如何,也許這將是有用的未來... – Zounadire

0

您可以類比jQuery.beforeSend趕道場XHR消息「發送」,並修改請求參數:

require([ 
    "dojo/request/notify", 
    "dojo/cookie" 
], function (notify, cookie) { 
    notify("send", function (response, cancel) { 
     response.xhr.setRequestHeader('X-CSRFToken', cookie("csrftoken")); 
    }); 
}); 
相關問題