Kürzlich wurde mir klar, dass ich easyXDM anstelle von jQuerys $.ajax
verwenden musste, um eine domainübergreifende Postanforderung zu stellen. Nachdem ich easyXDM eingerichtet habe, sehe ich, dass die Funktionen ziemlich nah beieinander liegen:
jQuery:
%Vor%easyXDM:
%Vor%myData ist wie folgt eingerichtet:
%Vor%Wenn ich die Anfrage mit jQuery mache, behandelt es die Unterfelder richtig, aber nicht mit easyXDM.
So kommt die POST-Anfrage mit jQuery auf den Server:
screenshot-with-shadow.png http://img37.imageshack.us/img37/4526/screenshotwithshadow. png
Und so kommt es mit easyXDM:
screenshot-with-shadow.png http://img204.imageshack.us/img204/4526/screenshotwithshadow. png
Wie kann ich ein JavaScript-Objekt / Array von Schlüssel / Wert-Paaren über eine easyXDM / XHR-Anfrage wie jQuery senden?
Angesichts der in den Kommentaren beschriebenen Einschränkungen von easyXDM besteht die einzige Möglichkeit darin, Ihre Daten bei der Übergabe an .request, d. h.
, manuell zu serialisieren %Vor%Alternativ könnten Sie Ihre eigene postMessage-Lösung erstellen, aber Sie werden IE7 und darunter ausschließen.
Ich glaube, Sie irren sich, wenn Sie eine Anfrage domainübergreifend über AJAX senden. Sie können tatsächlich eine Anfrage domainübergreifend über AJAX senden, unabhängig von der JavaScript-API. Um jedoch eine domänenübergreifende Antwort zu erhalten, muss die Antwort vom Datentyp JSONP sein.
JSONP ist einfach JSON mit Auffüllung, zum Beispiel:
JSON:
%Vor%JSONP:
%Vor%Es ist ein subtiler Unterschied, aber JSONP umgeht die Richtlinie für denselben Ursprung und erlaubt Ihnen, JSON-Daten zu nutzen, die von einem anderen Server bereitgestellt werden.
Um JSON-Daten von einem anderen Server über jQuery AJAX zu nutzen, versuchen Sie Folgendes:
%Vor%Damit dies funktioniert, müssen Sie sicherstellen, dass Ihr Web-Service Ergebnisse als JSONP und nicht als JSON zurückgibt.
Da easyXDM nicht richtig serialisiert werden kann, müssen Sie die Daten manuell serialisieren:
%Vor%Da die Anfrage jetzt eine JSON-Zeichenfolge anstelle eines Objekts enthält, sollte Index.html die Eigenschaften nicht analysieren, um eine JSON-Struktur zu erstellen. Gehen Sie zu index.html, das mit easyXDM geliefert wird, und suchen Sie den folgenden Code:
%Vor%Führen Sie diesen Code im Falle einer POST-Anfrage nicht aus. Weisen Sie config.data den Daten zu:
%Vor%Tags und Links javascript jquery ajax json xmlhttprequest