La mia domanda è: possiamo usare dojo.xhrPost per pubblicare alcuni dati Json? Ulteriori dettagli:Dojo dojo.rawXhrPost e dojo.xhrPost
Ho sperimentato con il codice Dojo per inviare dati POST JSON a un servizio RESTful. Sembra che i comportamenti di dojo.xhrPost e dojo.rawXhrPost siano diversi, o per essere più precisi rawXhrPost() funziona e xhrPost() no. Ciò non è coerente con la mia lettura del docs
Lo scopo originale di dojo.rawXhrPost era un metodo che potrebbero essere utilizzati per inviare un messaggio corpo grezzo al server. A partire da 1.3, questa funzione è comune con dojo.xhrPost(). Così, per l'utilizzo di dojo.rawXhrPost(), vedere dojo.xhrPost()
il che implica che xhrPost() è sufficiente. Il mio codice è simile a questo: ho un servizio di libreria "giocattolo" che gestisce Editions of Books. Il codice vuole inserire un nuovo ingresso,
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);
I intestazioni: { "Content-Type": "application/json"} parte necessaria in modo che il mio servizio JAX-RC capisce che il contenuto è JSON .
Quello che trovo è che il codice sopra funziona perfettamente. Tuttavia se invece dico:
var deferred = dojo.xhrPost(xhrArgs);
Nessun dato viene trasmesso nel POST. Ho un monitor TCP/IP in atto e posso vedere che non viene trasmesso nulla.
Quindi, questo è un bug o sto guidando xhrPost() in modo errato? O dovrei usare rawXhrPost()? Se quest'ultimo, in quali circostanze usiamo i due sapori di XhrPost?
Grazie, sperimenterà e riferirà. – djna
Penso che il charset che intendevi usare sia utf-8 not uft-8. – Traker
@Tracker: hai ragione. Ora è risolto. – lambacck