XMLHttpRequest, czyli AJAX, bez XML.
Dokładny sposób, w jaki to zrobisz, zależy od używanego frameworka JavaScript, ale jeśli pominiemy problemy ze współdziałaniem, Twój kod będzie wyglądał mniej więcej tak:
var client = new XMLHttpRequest ();
client.open ('GET', '/foo.txt');
client.onreadystatechange = function () {
alert (client.responseText);
}
client.send ();
Zwykle jednak XMLHttpRequest nie jest dostępny na wszystkich platformach, więc pewne oszustwa zostały zrobione. Po raz kolejny najlepszym rozwiązaniem jest użycie frameworka AJAX, takiego jak jQuery.
Dodatkowa uwaga: będzie to działać tylko wtedy, gdy plik foo.txt znajduje się w tej samej domenie. Jeśli znajduje się w innej domenie, zasady zabezpieczeń tego samego pochodzenia uniemożliwiają odczytanie wyniku.
if (client.readyState === 4){ }
client.onloadend
i po prostu uzyskać kompletne daneclient.readyState
wartości właściwości. Głosuję w dół, dopóki nie będzie, ludzie nie będą czytać komentarzy, aby odkryć, że odpowiedź jest tylko częściowo poprawna.oto jak zrobiłem to w jQuery:
źródło
file://
npfile:///example.com/foo.html
. : . Firefox skarży się na błąd składni i blokuje Chrome, ponieważ uważa to za żądanie Cross-Origin.dataType
parametr, patrz api.jquery.com/jQuery.get/http://...
część, ponieważ znajduje się w tej samej domenie, to zadziała npjQuery.get("foo.txt", ...)
.Aktualizacja 2019: Korzystanie z funkcji Fetch:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
źródło
response.ok
(lub odpowiednika) gdzieś w kodzie? Nie mam dużego doświadczeniafetch
, więc nie znam dokładnego miejsca ustawienia.Jeśli potrzebujesz tylko stałego ciągu z pliku tekstowego, możesz dołączyć go jako JavaScript:
Ciąg ładowany z pliku staje się dostępny dla JavaScript po załadowaniu. Znak `(backtick) zaczyna i kończy literał szablonu , zezwalając na użycie zarówno znaków", jak i "w bloku tekstowym.
To podejście działa dobrze, gdy próbujesz załadować plik lokalnie, ponieważ Chrome nie zezwala na AJAX w adresach URL ze
file://
schematem.źródło
Należy pamiętać, że Javascript działa na kliencie, a nie na serwerze. Tak naprawdę nie można „załadować pliku” z serwera w Javascript. Dzieje się tak, że Javascript wysyła żądanie do serwera, a serwer odsyła zawartość żądanego pliku. W jaki sposób Javascript otrzymuje zawartość? Do tego służy funkcja wywołania zwrotnego. To znaczy w przypadku Edwarda
w przypadku Danba tak jest
Ta funkcja jest wywoływana za każdym razem, gdy nadejdą dane. Wersja jQuery niejawnie używa Ajax, po prostu ułatwia kodowanie poprzez hermetyzację tego kodu w bibliotece.
źródło
Aktualizacja 2020: Używanie Fetch z async / await
Należy pamiętać, że
await
można tego używać tylko wasync
funkcji. Może to być dłuższy przykładźródło
Powinno to działać w prawie wszystkich przeglądarkach:
Dodatkowo jest nowe
Fetch
API:źródło
Pracując z jQuery zamiast używać
jQuery.get
npmożesz użyć,
.load
co daje znacznie bardziej skondensowaną formę:.load
daje również opcję załadowania częściowych stron, co może się przydać, patrz api.jquery.com/load/ .źródło
Jeśli twoje dane wejściowe miały strukturę XML, możesz użyć
importXML
funkcji. (Więcej informacji tutaj w quirksmode ).Jeśli to nie jest XML i nie ma równoważnej funkcji do importowania zwykłego tekstu, możesz otworzyć go w ukrytej ramce iframe, a następnie przeczytać zawartość stamtąd.
źródło