Ich mache einen AJAX-Aufruf, um einen einfachen Text abzurufen:
%Vor%Wenn ich die Anfrage mache, bekomme ich den folgenden Fehler:
Fehler: nicht gut ausgebildet Quelldatei: file: ///projects/foo/programData.txt? _ = 1259694590361 Zeile: 1, Spalte: 2
Warum versucht jQuery meinen Klartext zu verarbeiten und wie bekomme ich es zum Stoppen?
Laden Sie die Seite in Ihrem Browser über HTTP oder öffnen Sie sie einfach als normale Datei? Beginnt die Adresse der Seite, auf der das Javascript ausgeführt wird, mit http: oder file:? Ich vermute, dass es letzteres ist, und Ajax ruft in dieser Situation anders an (siehe Antwort von tvanfonsson unten). Wenn Sie eine Webanwendung erstellen, die später über HTTP bereitgestellt wird, versuchen Sie, Ihre Seite mit einem lokalen HTTP-Server auszuführen.
Firefox versucht, die Datei als HTML zu analysieren, bevor sie sie sogar an jQuery zurückgibt.
Es gibt mehrere Gründe, warum es versuchen könnte, dies zu tun. Wenn, wie Jaanus vorgeschlagen hat, Sie eine file: // oder chrome: // URL verwenden, dann hat sie keinen MIME-Typ und nimmt HTML an. Oder Ihr HTTP-Server könnte den falschen MIME-Typ zurückgeben.
Ab jQuery 1.5.1 gibt es eine mimeType-Option, um den zurückgegebenen MIME-Typ zu überschreiben, den Firefox sieht. So können Sie Folgendes tun:
%Vor%Doc auf MimeType-Option ist um Ссылка
Und hier ist ein Hintergrund dazu, was auf der Firefox-Ebene abläuft: Ссылка
Beim Öffnen einer lokalen Datei über XMLHttpRequest erhalten Sie andere Antwortcodes als bei Verwendung einer HTTP-Anfrage. Ich vermute, dass, da Sie eine lokale Datei öffnen, jQuery den Antwortcode erstickt und denkt, dass es ein Fehler ist, weil es nicht 200 OK
ist.
%Vor%Beispiel: Nicht-synchrone HTTP-Anfrage
Trotz seines Namens kann XMLHttpRequest für Nicht-HTTP-Anfragen verwendet werden. In diesem Beispiel wird gezeigt, wie Sie eine Datei aus dem lokalen Dateisystem abrufen können.
Das Wichtigste, was hier zu beachten ist, ist, dass der Ergebnisstatus anstelle von 200 mit Erfolg verglichen wird. Dies liegt daran, dass die Datei- und FTP-Schemata keine HTTP-Ergebniscodes verwenden
Unterstützte Typen sind:
%Vor%Vielleicht sollte "html" anstelle von "text" verwendet werden, da jQuery anscheinend nichts analysiert, wenn Sie html als Typ angeben.