在放置或发布时,如何在dojo.store.JsonRest中将标题设置为“Accept”application / json?

时间:2011-04-20 14:24:10

标签: dojo

在推送或发布时,如何在dojo.store.JsonRest中为application / json设置标题“Accept”值?

var dataStore = new dojo.store.JsonRest({
    target : "/project-services/"
});

dataStore.put({id: 10, field1: "Some Value", field2: "Other Value"});

目前发送的标题是:

接受text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8

2 个答案:

答案 0 :(得分:3)

看起来标题信息不是PUT和POST的选项所以我决定只是扩展dojo.store.JsonRest。

/**
 * Extend the dojo.store.JsonRest
 */

if(!dojo._hasResource["ext.store.JsonRest"]) {
    dojo._hasResource["ext.store.JsonRest"] = true;
    dojo.provide("ext.store.JsonRest");
    dojo.require("dojo.store.JsonRest");
    dojo.extend(dojo.store.JsonRest, {
        put: function(object, options){
            options = options || {};
            var id = ("id" in options) ? options.id : this.getIdentity(object);
            var hasId = typeof id != "undefined";
            return dojo.xhr(hasId && !options.incremental ? "PUT" : "POST", {
                    url: hasId ? this.target + id : this.target,
                    postData: dojo.toJson(object),
                    handleAs: "json",
                    headers:{
                        "Content-Type": "application/json"
                        , "If-Match": options.overwrite === true ? "*" : null
                        , "If-None-Match": options.overwrite === false ? "*" : null
                        , "Accept": "application/javascript, application/json"
                    }
                });
        },
    });
}

答案 1 :(得分:0)

我今天遇到了同样的问题,最终得到了像你一样的解决方法。 #dojo中的PEM建议我为它创建一个trac条目,所以希望它能在不久的将来修复bugs.dojotoolkit.org/ticket/12826