XDomainRequest-problem
Ich versuche, mich ein asynchroner Aufruf eines service, der json zurückgibt mit XDomainRequest (IE8). Das problem ist, dass ich immer eine Fehlermeldung erhalten (das onerror-Ereignis ausgelöst wird, und der responseText ist immer null), bin ich mit fiddler zu prüfen, die Reaktion von dem service und ich richtig scheint (ich kann sehen, dass das json-Objekt returnig), dies passiert nur im IE8 bei Verwendung XDomainRequest, die gleiche Funktionalität implementiert, die in JQuery funktioniert einwandfrei.
Jeder Hinweis wäre willkommen. Danke!
P. S.: Dies ist mein javascript code:
.....
if (jQuery.browser.msie && window.XDomainRequest) {
//Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("post", url);
xdr.onload = function () {
alert("Loading");
alert(xdr.responseText);
};
xdr.onsuccess = function() {
alert("Success!");
alert(xdr.responseText);
};
xdr.onerror = function() {
alert("Error!");
alert(xdr.responseText);
};
xdr.onprogress = function() {
alert("Progress");
alert(xdr.responseText);
};
xdr.timeout = 1000;
xdr.send("data: " + escape(data));
var response = xdr.responseText;
} else .....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie sicher, dass der Dienst sendet eine Access-Control-Allow-Origin " -header passend zu den anfordernden URL?
Ihrem problem werden kann, ist der content-type gesendet, weil XDomainRequest nur unterstützen, "text/plain".
Referenz:
http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
Cheers,
Andre Pedroso
Einem Jahr alten post, Sie immer noch da GiaNU?!
Sie fordern xdr.onsuccess, aber ich glaube nicht, dass die Methode existiert.
Die xdr.onload funktioniert und scheinen äquivalent zu jQuery ' s AJAX "Erfolg" - Funktion.
Diese X-Domäne Zeug ist ziemlich neu, aber es ist ein sehr schönes Modell von MS jetzt hier: AJAX - Einführung von Cross-domain Request (XDR)
Dem xdr.ontimeout ich kann nicht etwas zu tun, aber nicht finden, eine noch brauchen 🙂
Ich habe die Dinge laufen erste w/jQuery und jetzt mit ie9 vielen Dank an das MS-post.
XDR-hat einige Schwierigkeiten mit dem timing für meine aktuelle Anwendung und ist nur ein timeout zu umgehen:
Andere gotcha ist, wenn Sie den service über Cassini dann die "Access-Control-Allow-Origin" - header nicht zurückgegeben werden, wie Cassini nicht zu erkennen. Wir hatten ein Szenario, in dem das service-Aufrufe wurden arbeiten auf einem test-server, aber nicht lokal arbeiten. Stellt sich heraus, war der service gehostet in Cassini auf unseren lokalen dev-Maschine, aber auf IIS gehostet wird auf dem test-server.
Auch hier ist das web.config-Einstellung für alle, die es benötigt (Anmerkung: dies ermöglicht den Zugriff von allen Domänen - "*"):