2012-04-11 16 views
13

Mögliche Duplizieren:
jquery - Read a text file?Lesen einer Textdatei mit jQuery

ich eine lokale Textdatei lesen möchten, mit jQuery. Also versuche ich dies:

$.get('file_to_read.txt', function(data) { 
    do_something_with(data) 
}); 

interpretiert jedoch jQuery „file_to_read.txt“ als HTML-Datei und ich bekomme einen Fehler Javascript, weil es nicht richtig ist formatiert und „do_something_with“ nicht über seine gewünschte Wirkung, da Daten keine Zeichenfolge.

Das jQuery-Dokument sagt, dass ich den Datentyp angeben muss. Sie listen jedoch nur html, xml, json und script als mögliche Datendateien auf; Was soll ich mit einer einfachen txt-Datei machen, die ich direkt in eine Zeichenkette laden möchte?

+0

Warum Sie es nicht mit HTML-Format bekommen und dann konvertieren es zu stringeln? –

+0

Möglich dulicate http://stackoverflow.com/questions/1981815/jquery-read-a-text-file – coder

+0

Sie können eine "lokale" Textdatei mit jQuery nicht lesen. jQuery hat keinen Zugriff auf das clientseitige Dateisystem. Meinst du "lokal" wie in einem Teil deiner Domain? – meagar

Antwort

30

Verwenden Sie den 'text' Datentyp in Ihrer $.get() Anfrage.

$.get('file_to_read.txt', function(data) { 
    do_something_with(data) 
}, 'text'); 
// ^------last argument 

Andernfalls rät jQuery bei, was zurückgegeben wurde.


Remeber, $.get ist nur eine Bequemlichkeit Wrapper für $.ajax. Die Datentypen sind in der $.ajax() docs aufgelistet ...

datatype

Standard: Intelligente Raten (xml, json, ein Skript oder html)

Die Art der Daten, die Sie erwarten zurück vom Server. Wenn keine angegeben ist, wird jQuery versuchen, basierend auf dem MIME-Typ der Antwort eine Antwort zu erhalten (ein XML-MIME-Typ liefert XML, in 1.4 wird JSON ein JavaScript-Objekt ergeben, in 1.4 wird Skript ausgeführt und alles andere wird ausgeführt als String zurückgegeben). Die verfügbaren Typen (und das Ergebnis, das als erstes Argument für Ihren Erfolgsrückruf übergeben wurde) sind:

"xml": Gibt ein XML-Dokument zurück, das über jQuery verarbeitet werden kann.

"html": Gibt HTML als einfachen Text zurück; Eingeschlossene Skript-Tags werden ausgewertet, wenn sie in das DOM eingefügt werden.

"Skript": Evaluiert die Antwort als JavaScript und gibt sie als Nur-Text zurück. Deaktiviert das Caching durch Anhängen eines Abfragezeichenfolgenparameters "_ = [TIMESTAMP]" an den URL, sofern die Cacheoption nicht auf "true" festgelegt ist. Hinweis: Dadurch werden POSTs zu GETs für Remotedomänenanforderungen.

"json": Evaluiert die Antwort als JSON und gibt ein JavaScript-Objekt zurück. In jQuery 1.4 werden die JSON-Daten streng analysiert. Jegliche fehlerhafte JSON wird zurückgewiesen und ein Parse-Fehler wird ausgelöst. (Weitere Informationen zur korrekten JSON-Formatierung finden Sie unter json.org.)

"jsonp": Wird in einem JSON-Block mit JSONP geladen. Fügt ein zusätzliches "? Callback =?" an das Ende Ihrer URL, um den Rückruf festzulegen. Deaktiviert das Caching durch Anhängen eines Abfragezeichenfolgenparameters "_ = [TIMESTAMP]" an den URL, sofern die Cacheoption nicht auf "true" festgelegt ist.

"Text": Eine einfache Textzeichenfolge.

mehrere, durch Leerzeichen getrennte Werte: Ab jQuery 1.5 kann jQuery einen Datentyp so konvertieren, wie er im Content-Type-Header empfangen wurde. Wenn Sie beispielsweise eine Textantwort als XML behandeln möchten, verwenden Sie "text xml" für den Datentyp. Sie können auch eine JSONP-Anfrage erstellen, sie als Text empfangen und von jQuery als XML interpretieren: "jsonp text xml." In ähnlicher Weise wird eine Kurzzeichenfolge wie "jsonp xml" zuerst versuchen, von jsonp nach xml zu konvertieren, und andernfalls von jsonp in Text und dann von text in xml konvertieren.

+0

Danke. Für zukünftige Referenz: Wie kann ich wissen, dass "Text" ein legitimer Datentyp ist? Ich habe in der jQuery-Dokumentation nicht nachgesehen. –

+2

@GadiA: Ich habe gerade meine Antwort mit den Dokumenten von '$ .ajax' aktualisiert. Methoden wie '$ .get' sind nur ein Wrapper für' $ .ajax', daher sollten Sie generell auf diese Dokumente verweisen. –

+0

Ist es möglich, die Textdatei von html 'Datei' Upload-Steuerelement zu lesen? –

1

try datatype „text“ (oder „html“, sollte es funktionieren, wenn Sie html „Skript“ Tags in ihm nicht haben)