Wie kann ich ein JavaScript-Objekt / Array als Schlüssel-Wert-Paare über einen AJAX-Post mit easyXDM senden?

8

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?

    
Steve Brown 25.10.2012, 21:30
quelle

3 Antworten

4

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.

    
robC 26.10.2012, 15:11
quelle
2

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.

    
Christopher.Cubells 26.10.2012 14:22
quelle
1

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%     
Boris Lipschitz 19.09.2013 06:27
quelle