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
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
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
getestetKönnen Sie die Geige testen und hier das Ergebnis veröffentlichen?
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.
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%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
Wenn Sie jquery verwenden, benötigen Sie möglicherweise auch:
%Vor%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.
Tags und Links javascript jquery ajax