Meine Frage ist: Können wir dojo.xhrPost verwenden, um einige Json-Daten zu veröffentlichen? Mehr Details:
Ich habe mit Dojo-Code experimentiert, um JSON-Daten an einen REST-fähigen Dienst zu senden. Es scheint, dass die Verhaltensweisen von dojo.xhrPost und dojo.rawXhrPost anders sind, oder genauer gesagt, rawXhrPost () funktioniert und xhrPost () nicht. Dies stimmt nicht mit meiner Lektüre der Dokumentation
übereinDer ursprüngliche Zweck von dojo.rawXhrPost war eine Methode, die könnte verwendet werden, um einen rohen Postkörper zu senden zum Server. Ab 1.3, dies Funktion ist üblich mit dojo.xhrPost (). Also, für die Verwendung von dojo.rawXhrPost (), siehe dojo.xhrPost ()
Was bedeutet, dass xhrPost () genug ist. Mein Code sieht folgendermaßen aus: Ich habe einen "Spielzeug" -Bibliotheksdienst, der Büchereditionen verwaltet. Der Code möchte einen neuen Eintrag senden,
%Vor%Die Header : {"Content-Type": "application / json"} Teil in notwendig, damit mein JAX-RC-Service versteht, dass der Inhalt JSON ist.
Was ich finde ist, dass der obige Code perfekt funktioniert. Aber wenn ich stattdessen sage:
%Vor%Im POST werden keine Daten übertragen. Ich habe einen TCP / IP-Monitor an Ort und Stelle und kann sehen, dass nichts übertragen wird.
Also, ist das ein Fehler, oder fahre ich xhrPost () falsch? Oder sollte ich rawXhrPost () verwenden? Wenn letzteres, unter welchen Umständen verwenden wir die zwei Aromen von XhrPost?
Ab DOJO 1.4 sollte das funktionieren:
%Vor%Wenn Sie JSON-Daten posten, ist der Content-Type-Header wichtig. Wenn Sie es nicht hinzufügen, wird der Browser standardmäßig auf "application / x-www-form-urlencoded" und die URL-Codierung Ihrer Daten für Sie eingestellt.
Vielleicht möchten Sie dem Content-Type-Header einen Zeichensatz hinzufügen (das mache ich), aber das hindert ihn nicht daran, zu funktionieren:
%Vor%Bei Firefox 3.6 wird der Zeichensatz automatisch hinzugefügt.
Wie Dom erwähnt, ist das HTTP PUT-Äquivalent dojo.xhrPut. Der Unterschied hier besteht darin, dass Sie Ihre Anfragedaten als putData anstelle von postData hinzufügen müssen.
Bei der Verwendung der Dojo-Bibliothek von Ссылка habe ich keine Ausgabe von Buchungsdaten aus einem Formular (Daten serialisiert von dojo.formToJson()
).
Mit Firebug in Firefox kann ich sehen, dass meine Anfrage wie erwartet erstellt wurde:
Content-Type = application/json; charset=UTF-8
{"postalCode":"h8p3r8","countryCode":"CA"}
xhrPost / xhrPut scheint als rawXhrPost / rawXhrPut ...
zu funktionierenNoch eine Sache, der ich die Antwort hinzufügen möchte. Wenn Sie mit AJAX-Apps arbeiten, sollten Sie den Accept-Wert auf application / json einstellen, wenn Sie das erwarten.
%Vor%