2012-03-23 55 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