我正在使用dojo和Java EE开发单页Web应用程序。
客户端脚本使用dojox.data.JsonRestStore与后端交换数据。
我想将会话ID提供给每个AJAX-Request。
我知道你可以使用ajax setup
在JQuery中实现这一点$.ajaxSetup({
beforeSend: function() {
//add parameters to request...
}
});
有没有办法以类似的方式设置dojo?
答案 0 :(得分: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);
}
})();
});
答案 1 :(得分:0)
将其放入网址:
$.ajaxSetup({
url: "/yourcode?sessionId=" + sessionId;
});
答案 2 :(得分:0)
你可以用类比jQuery.beforeSend捕获Dojo XHR消息“发送”并修改请求参数:
require([
"dojo/request/notify",
"dojo/cookie"
], function (notify, cookie) {
notify("send", function (response, cancel) {
response.xhr.setRequestHeader('X-CSRFToken', cookie("csrftoken"));
});
});