Dojo dojo.rawXhrPost und dojo.xhrPost

8

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

überein
  

Der 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?

    
djna 04.12.2009, 13:25
quelle

3 Antworten

13

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.

    
lambacck 31.01.2010, 21:51
quelle
3

Bei der Verwendung der Dojo-Bibliothek von Ссылка habe ich keine Ausgabe von Buchungsdaten aus einem Formular (Daten serialisiert von dojo.formToJson() ).

%Vor%

Mit Firebug in Firefox kann ich sehen, dass meine Anfrage wie erwartet erstellt wurde:

  • Unter anderen Anforderungsheadern: Content-Type = application/json; charset=UTF-8
  • Körper der Put-Anfrage: {"postalCode":"h8p3r8","countryCode":"CA"}

xhrPost / xhrPut scheint als rawXhrPost / rawXhrPut ...

zu funktionieren     
Dom Derrien 09.12.2009 15:31
quelle
2

Noch 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%     
Richard Ayotte 24.03.2011 13:28
quelle

Tags und Links