Мой вопрос: можем ли мы использовать dojo.xhrPost для публикации некоторых данных Json? Подробнее:
Я экспериментировал с кодом Dojo для отправки данных JSON в службу RESTful. Похоже, что поведение dojo.xhrPost и dojo.rawXhrPost отличается, или, если быть более точным, rawXhrPost() работает, а xhrPost() — нет. Это не согласуется с моим прочтением документов.
Первоначальной целью dojo.rawXhrPost был метод, который можно было использовать для отправки необработанного тела сообщения на сервер. Начиная с версии 1.3, эта функция является общей для dojo.xhrPost(). Итак, для использования dojo.rawXhrPost() см. 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);
Часть заголовков : { "Content-Type": "application/json"} необходима, чтобы моя служба JAX-RC понимала, что это содержимое в формате JSON.
Я обнаружил, что приведенный выше код работает отлично. Однако, если вместо этого я скажу:
var deferred = dojo.xhrPost(xhrArgs);
В POST данные не передаются. У меня установлен монитор TCP/IP, и я вижу, что ничего не передается.
Итак, это ошибка, или я неправильно использую xhrPost()? Или мне следует использовать rawXhrPost()? Если второе, то при каких обстоятельствах мы используем две разновидности XhrPost?