2012-04-11 23 views
13

Powiel możliwe:
jquery - Read a text file?Czytanie plik tekstowy z jQuery

chcę czytać lokalnego pliku tekstowego za pomocą jQuery. Więc spróbuj tego:

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

Jednak jQuery interpretuje „file_to_read.txt” jako plik HTML i pojawia się błąd Javascript, ponieważ nie jest prawidłowo sformatowany i „do_something_with” nie posiada pożądany efekt, ponieważ dane nie ciąg.

Dokument jQuery mówi, że muszę podać typ danych. Jednak zawierają one jedynie pliki html, xml, json i script jako możliwe pliki danych; co powinienem zrobić z prostym plikiem tekstowym, który chcę załadować bezpośrednio do łańcucha?

+0

Dlaczego nie dostaniesz go w formacie HTML, a następnie przekonwertować to ciąg? –

+0

Możliwe dulicate http://stackoverflow.com/questions/1981815/jquery-read-a-text-file – coder

+0

Nie można odczytać "lokalnego" pliku tekstowego z jQuery. jQuery nie ma dostępu do systemu plików po stronie klienta. Masz na myśli "lokalny" jak w domenie, część domeny? – meagar

Odpowiedz

30

Użyj typu 'text' w swoim żądaniu 'text'.

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

W przeciwnym razie jQuery zgaduje, co zostało zwrócone.


Pamiętaj, $.get tylko wrapper wygoda dla $.ajax. Te typy danych są wymienione w $.ajax() docs ...

dataType

Domyślnie: Inteligentny Guess (XML, JSON, skrypt lub html)

typ danych, które czekasz wróć z serwera. Jeśli żadna nie zostanie określona, ​​jQuery spróbuje wywnioskować ją na podstawie typu MIME odpowiedzi (typ MIME XML da XML, w 1.4 JSON da obiekt JavaScript, w 1.4 skrypt wykona skrypt, a wszystko inne będzie zwracane jako ciąg). Dostępne typy (i wynik przekazany jako pierwszy argument do twojego odwołania zwrotnego sukcesu) to:

"xml": Zwraca dokument XML, który można przetworzyć za pomocą jQuery.

"html": zwraca HTML jako zwykły tekst; zawarte znaczniki skryptów są oceniane po wstawieniu do DOM.

"Skrypt": ocenia odpowiedź jako JavaScript i zwraca ją jako zwykły tekst. Wyłącza buforowanie przez dodanie parametru ciągu zapytania "_ = [TIMESTAMP]" do adresu URL, chyba że opcja pamięci podręcznej ma wartość true. Uwaga: To spowoduje, że testy POST w GET dla żądań zdalnej domeny.

"json": Ocena odpowiedzi jako JSON i zwraca obiekt JavaScript. W jQuery 1.4 dane JSON są przetwarzane w sposób ścisły; każdy zniekształcony JSON jest odrzucany i generowany jest błąd analizy. (Więcej informacji na temat właściwego formatowania JSON można znaleźć na stronie json.org).

"jsonp": Ładuje w bloku JSON za pomocą JSONP. Dodaje dodatkowe "? Callback =?" na końcu adresu URL, aby określić wywołanie zwrotne. Wyłącza buforowanie przez dodanie parametru ciągu zapytania "_ = [TIMESTAMP]" do adresu URL, chyba że opcja pamięci podręcznej ma wartość true.

"tekst": zwykły ciąg tekstowy.

wiele wartości rozdzielonych spacjami: od jQuery 1.5 jQuery może konwertować typ danych z tego, co otrzymał w nagłówku Content-Type na to, czego potrzebujesz. Na przykład, jeśli chcesz, aby odpowiedź tekstowa była traktowana jako XML, użyj "text xml" dla dataType. Możesz również utworzyć żądanie JSONP, otrzymać je jako tekst i zinterpretować przez jQuery jako XML: "jsonp text xml." Podobnie skrót "jsonp xml" najpierw spróbuje konwertować z jsonp do xml, a jeśli nie, konwertuje z jsonp na text, a następnie z text na xml.

+0

Dzięki. Na przyszłość: skąd mogę wiedzieć, że "tekst" jest prawowitym typem danych do przekazania? Nie widziałem w dokumentacji jQuery. –

+2

@GadiA: Właśnie zaktualizowałem swoją odpowiedź dokumentami z '$ .ajax'. Metody takie jak '$ .get' są po prostu opakowaniem dla' $ .ajax', więc powinieneś ogólnie odwołać się do tych dokumentów. –

+0

Czy można odczytać plik tekstowy z html 'file' upload control? –

1

try dataType „tekst” (lub „html”, to powinno działać, jeśli nie masz html „skrypt” tagi w nim)