XMLHttpRequest, т.е. AJAX, без XML.
Точный способ, которым вы это делаете, зависит от того, какую платформу JavaScript вы используете, но если мы не примем во внимание проблемы взаимодействия, ваш код будет выглядеть примерно так:
var client = new XMLHttpRequest ();
client.open ('GET', '/foo.txt');
client.onreadystatechange = function () {
оповещения (client.responseText);
}
client.send ();
Тем не менее, как правило, XMLHttpRequest доступен не на всех платформах, поэтому некоторая путаница уже сделана. Еще раз, вам лучше всего использовать AJAX-фреймворк, такой как jQuery.
Еще одно соображение: это будет работать только до тех пор, пока foo.txt находится в одном домене. Если он находится в другом домене, политики безопасности того же источника не позволят вам прочитать результат.
if (client.readyState === 4){ }
client.onloadend
и просто получить заполненные данныеclient.readyState
значения свойства. Я опускаю голос до тех пор, пока это не произойдет, люди не собираются читать комментарии, чтобы обнаружить, что ответ только отчасти прав.вот как я это сделал в jquery:
источник
file://
именно:file:///example.com/foo.html
. Firefox жалуется на синтаксическую ошибку и блоки Chrome, потому что он рассматривает его как перекрестный запрос.dataType
параметр, см. api.jquery.com/jQuery.get/http://...
часть, потому что она живет в том же домене, она будет работать, напримерjQuery.get("foo.txt", ...)
.Обновление 2019: использование Fetch:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
источник
response.ok
(или эквивалентные) где-то в вашем коде? Я не очень опытныйfetch
, поэтому я не знаю точное место для его установки.Если вам нужна только постоянная строка из текстового файла, вы можете включить ее как JavaScript:
Загруженная из файла строка становится доступной для JavaScript после загрузки. Символ `(backtick) начинается и заканчивается литералом шаблона , допуская символы" и "в вашем текстовом блоке.
Этот подход хорошо работает, когда вы пытаетесь загрузить файл локально, поскольку Chrome не разрешит AJAX для URL-адресов со
file://
схемой.источник
Следует иметь в виду, что Javascript запускается на клиенте, а не на сервере. Вы не можете «загрузить файл» с сервера в Javascript. В результате Javascript отправляет запрос на сервер, а сервер отправляет обратно содержимое запрошенного файла. Как Javascript получает содержимое? Вот для чего предназначена функция обратного вызова. В случае с Эдвардом это
и в случае Данба, это
Эта функция вызывается всякий раз, когда поступают данные. Версия jQuery неявно использует Ajax, она просто упрощает кодирование, инкапсулируя этот код в библиотеке.
источник
Обновление 2020: использование Fetch с async / await
Обратите внимание, что
await
можно использовать только вasync
функции. Более длинный пример может бытьисточник
Это должно работать почти во всех браузерах:
Кроме того, есть новый
Fetch
API:источник
При работе с jQuery вместо использования
jQuery.get
, например,Вы можете использовать,
.load
что дает вам гораздо более сжатую форму:.load
также дает вам возможность загружать частичные страницы, которые могут пригодиться, см. api.jquery.com/load/ .источник
Если ваш ввод был структурирован как XML, вы можете использовать
importXML
функцию. (Более подробная информация здесь в Quirksmode ).Если это не XML, и нет эквивалентной функции для импорта простого текста, тогда вы можете открыть его в скрытом фрейме и затем прочитать содержимое оттуда.
источник