Чтение текстового файла с помощью jQuery

Возможный дубликат:
jquery - прочитать текстовый файл?

Я хочу прочитать локальный текстовый файл, используя jQuery. Поэтому я пробую это:

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

Однако jQuery интерпретирует файл "file_to_read.txt" как html файл, и я получаю ошибку Javascript, потому что он неправильно отформатирован, а "do_something_with" не имеет желаемого эффекта, поскольку данные не являются строкой.

в документе jQuery указано, что мне нужно указать тип данных. Однако они только перечисляют html, xml, json и script как возможные файлы данных; что я должен делать с простым файлом txt, который я хочу загрузить непосредственно в строку?

Ответ 1

Используйте тип данных 'text' в $.get().

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

В противном случае jQuery угадывает, что было возвращено.


$.get, $.get - это просто удобная оболочка для $.ajax. Типы данных перечислены в документах $.ajax()...

тип данных

По умолчанию: Intelligent Guess (xml, json, script или html)

Тип данных, которые вы ожидаете от сервера. Если ни один не указан, jQuery попытается вывести его на основе типа ответа MIME (тип XML MIME даст XML, в 1.4 JSON будет создан объект JavaScript, в 1.4 скрипт выполнит скрипт, и все остальное будет возвращается как строка). Доступные типы (и результат, переданный в качестве первого аргумента для вашего обратного вызова):

"xml": возвращает XML-документ, который может обрабатываться через jQuery.

"html": возвращает HTML как обычный текст; включенные теги скриптов оцениваются при вставке в DOM.

"script": оценивает ответ как JavaScript и возвращает его как обычный текст. Отключает кеширование путем добавления параметра строки запроса "_ = [TIMESTAMP]" к URL-адресу, если для параметра кеша установлено значение true. Примечание. Это приведет к отправке POST в GET для запросов удаленного домена.

"json": оценивает ответ как JSON и возвращает объект JavaScript. В jQuery 1.4 данные JSON обрабатываются строгим образом; любой отклоненный JSON отклоняется и возникает ошибка синтаксического анализа. (См. Json.org для получения дополнительной информации о правильном форматировании JSON.)

"jsonp": загружает в блок JSON с помощью JSONP. Добавляет дополнительный "? Callback =?" до конца вашего URL-адреса, чтобы указать обратный вызов. Отключает кеширование путем добавления параметра строки запроса "_ = [TIMESTAMP]" к URL-адресу, если для параметра кеша установлено значение true.

"text": строка простого текста.

множественные значения, разделенные пробелами. Начиная с jQuery 1.5, jQuery может преобразовать dataType из того, что он получил в заголовке Content-Type, к тому, что вам нужно. Например, если вы хотите, чтобы текстовый ответ обрабатывался как XML, используйте "text xml" для dataType. Вы также можете сделать запрос JSONP, получить его как текст и интерпретировать jQuery как XML: "jsonp text xml". Точно так же строчная строка, такая как "jsonp xml", сначала попытается преобразовать из jsonp в xml, а в противном случае - преобразовать из jsonp в текст, а затем из текста в xml.

Ответ 2

попробуйте dataType "text" (или "html", он должен работать, если у вас нет html-тегов "script")