gpt4 book ai didi

json - Dojo dojo.rawXhrPost 和 dojo.xhrPost

转载 作者:行者123 更新时间:2023-12-04 05:21:50 30 4
gpt4 key购买 nike

我的问题是:我们可以使用 dojo.xhrPost 发布一些 Json 数据吗?更多详情:

我一直在尝试使用 Dojo 代码将 JSON 数据发布到 RESTful 服务。似乎是的行为dojo.xhrPost dojo.rawXhrPost 是不同的,或者更准确地说,rawXhrPost() 起作用而 xhrPost() 不起作用。这与我对 docs 的阅读不一致

The original purpose of dojo.rawXhrPost was a method that could be used to send a raw post body to the server. As of 1.3, this function is common with dojo.xhrPost(). So, for usage of dojo.rawXhrPost(), see dojo.xhrPost()



这意味着 xhrPost() 就足够了。我的代码看起来像这样 - 我有一个管理书籍版本的“玩具”图书馆服务。代码想要发布一个新条目,
        var myEdition = {"Edition":{"isbn":"44"}};

var xhrArgs = {
url: "http://localhost:8081/LibraryWink/library/editions",
postData: dojo.toJson(myEdition),
handleAs: "json",
headers: { "Content-Type": "application/json"},

load: function(data) {
dojo.byId("mainMessageText").innerHTML = "Message posted.";
},
error: function(error) {

dojo.byId("mainMessageText").innerHTML = "Error :" + error;
}
};

var deferred = dojo.rawXhrPost(xhrArgs);

headers: { "Content-Type": "application/json"} 部分是必要的,以便我的 JAX-RC 服务理解内容是 JSON。

我发现上面的代码运行完美。但是,如果我说:
var deferred = dojo.xhrPost(xhrArgs);

POST 中不传输任何数据。我有一个 TCP/IP 监视器,可以看到没有任何传输。

那么,这是一个错误,还是我错误地驱动了 xhrPost() ?或者我应该使用 rawXhrPost() 吗?如果是后者,我们在什么情况下使用 XhrPost 的两种风格?

最佳答案

从 DOJO 1.4 开始,这应该可以工作:

var myEdition = {"Edition":{"isbn":"44"}};

var xhrArgs = {
url: "http://localhost:8081/LibraryWink/library/editions",
postData: dojo.toJson(myEdition),
handleAs: "json",
headers: { "Content-Type": "application/json"},
load: function(data) {
dojo.byId("mainMessageText").innerHTML = "Message posted.";
},
error: function(error) {

dojo.byId("mainMessageText").innerHTML = "Error :" + error;
}
};

dojo.xhrPost(xhrArgs);

如果您要发布 JSON 数据,则 Content-Type header 至关重要。如果您不添加它,浏览器将默认为“application/x-www-form-urlencoded”并为您对数据进行 URL 编码。

您可能想在 Content-Type header 中添加一个字符集(我这样做),但这并不能阻止它运行:
    headers: { "Content-Type": "application/json; charset=utf-8"}

至少在 Firefox 3.6 上,字符集会自动添加。

正如 Dom 所提到的,HTTP PUT 等效项是 dojo.xhrPut。这里的区别在于您需要将请求正文数据添加为 putData 而不是 postData。

关于json - Dojo dojo.rawXhrPost 和 dojo.xhrPost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1846927/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com