2011-08-03 11 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に渡される" contents "プロパティ(POSTデータとして表示されます)に追加するだけです。または、セッションIDをブラウザマシンにクッキーとして保存すると何が問題になりますか?その後、1回のリクエストごとにクッキーとして送信されます。 –

+0

完了! D – Zounadire

答えて

0

URLでそれを入れて:

$.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、チップありがとう、しかし私はスティーブンによって言及されたように、クッキーaproachに切り替えました。とにかくこれは将来的には役に立つかもしれません... – 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")); 
    }); 
}); 
関連する問題