如何为每个ajax请求添加参数?

时间:2011-08-03 20:57:55

标签: jquery ajax rest dojo

我正在使用dojo和Java EE开发单页Web应用程序。

simplified architecture

客户端脚本使用dojox.data.JsonRestStore与后端交换数据。

我想将会话ID提供给每个AJAX-Request。

我知道你可以使用ajax setup

在JQuery中实现这一点
$.ajaxSetup({
    beforeSend: function() {
       //add parameters to request...
    }
});

有没有办法以类似的方式设置dojo?

3 个答案:

答案 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"));
    });
});