2012-03-23 50 views
4

我想知道是否有任何方法可以在Get ajax請求(xhr.get)中自動設置JsonRest商店中的自定義http標頭。使用JsonRest商店(dojo)自定義http標頭

有一個相關的主題,但沒有一個很好的解決方案: Dojo Data grid with custom HTTP headers

我已經看到了「dojo.store.JsonRest」的JsonRest實施,包括構造函數,如果我們能做到這一點與否不是很明顯(但我不這麼認爲)。在使用JsonRest存儲器的一個例子:

var store = new JsonRestStore({target: "/Table/" }); 

回答

7

我會完成它繼承dojo.store.JsonRest你可以在this jsFiddle看到。

A.子類dojo.store.JsonRest

var MyJsonRest = declare(JsonRest, { 

    get: function(id, options) { 
     return this.inherited(
      arguments, 
      [id, lang.mixin(this.defaultGetHeaders, options)] 
     ); 
    } 
}); 

所以你重寫get方法調用父類的get,但第二個參數options(即頭。)現在還包含來自this.defaultGetHeaders性能。

B.在構造函數中定義defaultGetHeaders

var myJsonRest = MyJsonRest({ 
    target: "/echo/json/", 
    defaultGetHeaders: { 
     userId: "xyz", 
     requestedBy: "abc", 
     requestedFrom: "123"    
    }   
}); 

C.調用myJsonRest.get()方法你也可以覆蓋默認標題:

myJsonRest.get("someId", { requestedFrom: "321"}).then(function(result) { 
    console.log(result);   
}); 

D.檢查請求頭:

enter image description here