2011-08-03 77 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")); 
    }); 
}); 
相关问题