AJAX Umgang 302-Umleitung
Ich habe eine Datenbank auf einem externen server, den ich versuche, die Abfrage. Um dies zu tun, werde ich auf meinem lokalen server (Tomcat) und das erstellen eines AJAX-calls (nur das XMLHttpRequest-Objekt - ich bin nicht mit jedem JavaScript-Bibliotheken), um die Seite mit einer Abfrage angehängt. Einfügen die genau die gleiche URL in Firefox bewirkt, dass es, um zu versuchen, um den download einer XML-Dokuments. Mein Ziel ist es, AJAX verwenden, um das XML-Dokument.
Das problem, das ich habe ist, dass wenn ich den Aufruf mit AJAX, Firebug zeigt, dass die Antwort zurückgegeben 302 "Moved Vorübergehend" mit einem roten X daneben. Der header für die Antwort hat ein Lage-parameter mit OAuth-Autorisierung, und wenn ich kopieren und fügen Sie den parameter " Ort " es bringt mich auf die richtige Seite (sagt mir der download des XML-Objekts).
EDIT: versuchte ich es mit jQuery $.get("URL", function(data){alert(data)});
und das gleiche passierte - keine Warnung, sondern eine rot-GET-Anfrage und 302 in Firebug.
Basierend auf diesen Informationen, ich denke, dass die Datenbank rufe ich zunächst versuchen, die Umleitung mich zu einigen OAuth Sache, was dann wieder einen autorisierten URL, mit der auf die Datenbank zugreifen. Dies ist, was ich verwenden sollte zum Aufruf der Datenbank, Holen Sie sich die XML-Objekts zurück, und dann mein eigenes Ding machen. AJAX scheint nicht in der Lage sein zu handhaben, umleiten und wird stattdessen Absturz.
Ich bin mir nicht sicher, das ist richtig, aber auch, weil ich versucht mit dem folgenden code:
else if (xmlhttp.readyState == 4 && xmlhttp.status == 302){
alert("Hello 302!");
}
else {
document.getElementById("test").innerHTML = "On state: " + xmlhttp.readyState + "<br />HTTP Status: " + xmlhttp.status;
}
und es mir nicht eine Warnung, sondern zeigt, dass es auf Status 4 und status 0. Ich verstehe nicht, warum würde es wieder status 0. (Edit: Korrigiert die Tippfehler erwähnt in Antwort 1 und nichts verändert)
Also meine Fragen sind:
- Was genau ist hier Los?
- Was ist das 0-status, warum Firebug gibt mir ein X neben 302 in der Konsole, und warum nicht gibt es eine Umleitung?
- Wie kann ich dieses Problem beheben?
- Sobald ich es beheben, werde ich in der Lage sein zu greifen, die XML-Datei, oder gibt es etwas, was ich sonst noch tun müssen?
BEARBEITEN MIT UPDATE: Es ist eine cross-site-scripting-Problem. Ich ging auf den externen server und lief das exakt gleiche Skript und war in der Lage, abrufen und analysieren ein XML-Dokument mit dem Ergebnis der Abfrage. Die einzige Hürde ist, herauszufinden, wie man dies von einem externen server. Ich habe Zugriff auf die Konfiguration des externen Servers und untersuchen, wie Sie zu manipulieren, um zu erlauben, Zugriff über Datenbank-Abfragen von anderen Websites.
- kannst du etwas code hier .... machen Sie auch eine Weiterleitung auf server-Seite ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da es sich um eine ajax-Anfrage Sie können nicht ziehen Sie Daten aus einer anderen Domäne: http://en.wikipedia.org/wiki/Same_origin_policy
Alles, was Sie hier tun können, ist wirklich anfordern von Daten von Ihrem eigenen server (gleiche domain) und haben es ziehen Daten aus der externen db für Sie.
edit: diese Antwort ist über 3 Jahre alt und jetzt mit modernen Browsern (nicht IE < 10) Sie können mit dem Cross-Origin Resource Sharing - https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
Haben Sie einen syntax-Fehler
readystate
werden mussreadyState
. Die Art, wie es geschrieben wird, es werden nie 4.Anderen Ratschlag wäre, eine überprüfung nur für eine
readyState
4 und innerhalb dieser Anweisung test für diestatus
302. Auf diese Weise werden Sie in der Lage sein, zu beheben, ob oder ob nicht es ist die 302, die die Ursache für Ihr Problem.Versuchen zu tun, die Umleitung auf der server-Seite
Snapshot von FireBug
In diesem snapshot der Ajax-request gesendet, um die server-Seite (wo es die Umleitung)