Chrome jQuery AJAX ist fehlgeschlagen, kein domänenübergreifendes Problem

8

Ich habe einen einfachen JS / jQuery-Code, um einen AJAX-Aufruf zu machen, um etwas HTML zu schnappen und es in ein div auf meiner Seite zu schieben. Dies funktioniert in Firefox gut, scheitert aber in Chrome.

In der Chrome-Konsole kann ich die AJAX-Anfrage mit dem Statustext "(failed)" sehen und "pending" eingeben.

Die gesamte Suche, die ich durchgeführt habe, bezieht sich auf domänenübergreifende Probleme. Dies passt hier nicht, ich führe dies auf einem Webserver mit einem Domainnamen ohne angehängte Portnummer.

Hier ist mein Codebeispiel (Sie sehen, dass ich anfing, .load () zu verwenden, dasselbe Problem):

%Vor%

In der Konsole von Chrome sieht das geloggte xhr-Objekt wie folgt aus:

%Vor%

Entschuldigung, dass das ein bisschen chaotisch aussieht, aber ich denke, das Wichtigste ist der Status von 0.

Überwachung der Protokolle, die Anfrage trifft meinen Server nicht.

Ich bin wirklich hier ratlos, ich würde jede Hilfe zu schätzen wissen!

Prost, Al

    
Al Bennett 22.01.2013, 18:40
quelle

9 Antworten

4

Es ist möglich, dass der Ajax-Aufruf vom AdBlock Chrome-Addon blockiert wird.

Einige URLs werden möglicherweise blockiert, basierend auf den Schlüsseln auf der Adblock-Blacklist. Auf der Registerkarte "DevTools-Netzwerk" werden solche Anforderungen im Status "Ausstehend" als "fehlgeschlagen" markiert     

ToC 24.09.2013, 14:45
quelle
1

Sie Code scheint perfekt, aber einige Tippfehler in Ihrem Code gesehen, fügte ich einige der anderen Elemente

%Vor%

oder Sie interessieren sich vielleicht dafür:

%Vor%     
Jai 01.02.2013 12:17
quelle
0

Ich habe eine kleine Änderung an Ihrem Code vorgenommen:

%Vor%

Danach habe ich Ihren Code so eingestellt, dass er auf einem jsfiddle funktioniert:

Ссылка

Ich erhalte den Inhalt von / _display / ( Ссылка ) Ich verweise darauf, weil Sie die URL nicht angegeben haben, die Sie laden möchten, und das war die einzige Seite, die ich finden konnte, die Daten zurückgeben würde, weil sie nicht domänenübergreifend ist.

Ich habe den Code auf Windows + Google Chrome Version 24.0.1312.52 m

getestet

Können Sie die Geige testen und hier das Ergebnis veröffentlichen?

    
Ferry Kobus 26.01.2013 14:43
quelle
0

könnte es das abschließende Komma nach der schließenden Klammer der Fehlerfunktion sein? Normalerweise würden Sie nur ein Komma setzen, wenn es weitere Objekte gibt ...

    
rnirnber 29.01.2013 00:39
quelle
0

Ich wünschte, ich hätte genug Reputation, um einen Kommentar zu schreiben, um nach weiteren Details zu fragen, aber das tue ich nicht. Also werde ich meine besten Erfahrungen machen.

Wenn es sich um ein domänenübergreifendes Problem handelte, hätte Chrome in der Konsole eine Fehlermeldung in rot protokolliert. Testen Sie in dieser Fiddle .

Eine Möglichkeit, die mir helfen könnte, ist, einen Sniffer zu benutzen. Glücklicherweise hat Chrome eine einfache Version in Chrome Developer Tool , indem du Ctrl + Shift + I drückst. Ich nehme an, du weißt es wahrscheinlich, da du die Konsolenausgabe kopiert hast, aber diesmal gehe zum Network Tab, stelle sicher, dass es geöffnet bleibt Sie klicken auf den Link, der diesen Click-Event-Handler auslöst.

Sie sehen einen neuen Datensatz in der Tabelle, klicken auf seinen Namen, und Sie können sich die Request- und Respond-Header ansehen oder sogar gerenderte Antworten. Hoffentlich gibt dies Ihnen mehr hilfreiche Informationen, wie ich normalerweise meins hier bekomme.

    
Justin Lau 29.01.2013 21:26
quelle
0

Warum versuchst du das nicht

? %Vor%

Viel Glück!

    
VMRodriguez 30.01.2013 00:02
quelle
0

Letztes Attribut von AJAX oder JSON endet nicht mit Komma, kein Zweifel, es scheiterte in Chrom & amp; IE aber warum gut in Firefox laufen, bin ich ratlos :), versuchen Sie es:

%Vor%     
Pranav Singh 31.01.2013 12:06
quelle
0

Die meisten Browser geben keinen interessanten Fehler zurück, wenn es sich um ein domainübergreifendes Skriptproblem handelt. Jeder, den ich verwendet habe, gibt einen StatusText von "error" und einen readyState von 0 zurück, wie Sie gezeigt haben. Sie denken möglicherweise, dass keine Cross-Domain-Aktion stattfindet, weil Sie tatsächlich etwas von der gleichen Domäne aufrufen, möglicherweise von einer anderen Sub-Domain oder einem anderen Port (https / non-https). Es ist möglich, dass Sie eine veraltete Version von Firefox haben, die domainübergreifende Einschränkungen nicht ausgleicht. Sie können dies in Ihrem Chrome überprüfen, indem Sie in der Net-Anfrage nach früheren Postern suchen und nach der Eigenschaft suchen: "Origin: null"

Wenn es sich tatsächlich um ein domänenübergreifendes Problem handelt (denke ich), müssen Sie die folgende PHP-Zeile (oder einen ähnlichen Header in der Backend-Sprache Ihrer Wahl) oben auf die Datei, die Sie anfordern , vor jedem HTML-Code.

%Vor%

Wenn Sie jquery verwenden, benötigen Sie möglicherweise auch:

%Vor%     
johnrom 31.01.2013 22:22
quelle
0

Wenn Ihr Server keine Anfrage erhält, muss das Problem innerhalb der von Ihnen verwendeten URL liegen.

Schreiben Sie das Protokoll und die vollständige URL oder nur teilweise?

Was passiert, wenn Sie einen Link hart codieren und verwenden? (wie folgt)

%Vor%

Wenn ich du wäre, würde ich sicherstellen, dass die $ .ajax wirklich ihr Ziel trifft, indem sie zuerst ein bekanntes Ziel fest codiert.

Wenn das hartcodierte Ziel keine Anfrage erhält, liegt das Problem woanders.

    
Morv 01.02.2013 00:26
quelle

Tags und Links