Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Получение данных с сервера


Автор: Shtig 5.10.2004, 19:44
Подскажите, пожалуйста, возможно ли в JS заполнить массив данными с сервера? Например строками некоторого файла www.example.com/data.txt. Если возможно, то как это делается?

Автор: Sardar 6.10.2004, 00:22
Да это вомзможно если ты хорошо понимаешь что приходит от сервера к браузеру - текст, который может быть JS кодом.
Дам пример на PHP:
Код
$file=file("data.txt"); //читаем файл
$JS_array="["; //литееральный массив
foreach($file as $v) {
$JS_array.="\"".addcslashes($v)."\", "; //набиваем данными, экранируем контрольные символы
}
$JS_array=substr($JS_array, 0, -2)."]"; //убнираем последнюю запятую
?>
<script language="javascript" type="text/javascript">
myJS_array=<?php echo $JS_array; ?>; //здесь мы получим строку: ["строка1", "строка2", "строка3"] - литеральный массив
alert(myJS_array);
</script>

Автор: Shtig 7.10.2004, 18:09
Это, к сожалению, не то... Приведенный пример, как я понял, генерирует готовый массив еще на стороне сервера. Понятно, что на сервере можно сгенерировать JS-код любого содержания. Задача же стоит именно в том, что бы заполнять массив динамически. Для понятности объясню, что именно это будет:
два поля <select> в форме. Одно с перечислением стран, другое - с перечислением городов выбранной страны (должно генерится при onChange первого поля). Так как список будет большим, загружать его весь (для всех стран) вместе со страницей мне бы не хотелось. Я думал получать его от скрипта по запросу типа www.example.com/cgi-bin/cities.pl?country=N.

Автор: Forza 7.10.2004, 18:26
Это можно сделать следующим образом.
По onChange списка стран в нулевой или невидимый фрейм отправляется запрос типа www.example.com/cgi-bin/cities.pl?country=N. Сервер, обрабатывая запрос в этом фрейме, передаёт на броузер javascript-код, который меняет содержимое списка городов в основном окне. Понятно?

Автор: Shtig 9.10.2004, 15:13
Спасибо, идея вполне ясна. Возможно, что так и сделаю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)