Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простмотр файла. открытие файла с сервера. 
:(
    Опции темы
Pikachu
Дата 22.5.2004, 14:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Меня вот что интересует: можно ли в переменную получить содержание файла по http.
т.е Я создаю переменную, потом делаю запрос, мне в ответ приходит html код, а я его загоняю в эту переменную для дольнейшей работы.
Просьба ответить в топ или на мыло [email protected]
  Вверх
Sardar
Дата 22.5.2004, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
Я создаю переменную, потом делаю запрос

Значит подгружаем этот файл во фрейме либо в дочернем окне...
Цитата
мне в ответ приходит html код, а я его загоняю в эту переменную для дольнейшей работы.

Не так. К тебе приходит URLEncoded текст страницы, а ты достаешь его на клиенте:
Код
<script type="text/javascript">
var data=unescape("URL кодированное содержание файла");
</script>
//как только файл страница загрузится у тебя будет в переменной data лежать содержимое присланного файла.

Встречный вопрос: зачем это нужно?
Опиши задачу получше, может придумаем более элегантное решение.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Pikachu
Дата 22.5.2004, 18:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Что-то не догоняю, как мне его достать, напимер я загружаю во фрейм:
Код

<iframe width = 100 height = 100 src = "http://www.yandex.ru">
</iframe>

А вот как оттуда его забить в переменную?
Вот ты написал: "URL кодированное содержание файла" - а что это такое?
напиши, если не трудно весь код.
  Вверх
Sardar
Дата 22.5.2004, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Это совсем другое. Ты не можешь обращатся к фрейму с контенотм не от твоего сервера. Сделанно во всех браузерах(пропатченно в ИЕ) для безопасности, что бы дядьки злые контент не подменивали и пароли не доставали. smile.gif


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Pikachu
Дата 22.5.2004, 20:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ты ж говорил, что я могу получить код страницы в переменную со стороны клиента.
А что такое контент?
  Вверх
Sardar
Дата 22.5.2004, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
Ты ж говорил, что я могу получить код страницы в переменную со стороны клиента.

Так разберемся до деталей.
Ту можешь послать серверу что угодно, твой сервер может послать тебе что угодно. Термин "твой сервер" означает сервер с которого загружен твой документ.

Ты не можешь изменять, доставать инфу и другим образом воздействовать на документы от другого сервера. Открой в новом окне или подгрузи во фрейме, ты все равно не можешь получить доступ к элементам чужой странички. Это обойти нельзя, разве только попросить пользователья поставить низкий уровень безопасности для зоны "Интернет", но это к программированию не отностится.

Если возникает ворпос: почему так строго, то подумай, а что хорошего ты хочешь сделать своим скриптом... Вот поэтому и закрывают такие возможности создавать шпионов и т.п. средставами браузера.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Pikachu
Дата 22.5.2004, 23:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мы наверное просто не поняли друг друга.
Предположим, на серве есть txt`шник, вот к такому файлу можно получить доступ через javascript?
Мне надо только считать его по http.
Ведь если я наберу его в адресной строчке своего браузера, я его вижу, а мне надо загнать его в переменную.
Вот.
А потом уже с ним работать.
  Вверх
Sardar
Дата 23.5.2004, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
Мне надо только считать его по http.

Насильно считать ничего нельзя, все что сервер даст то и получим. Если файл можно достать набрав его адрес в адресной строке браузера то:
  • делаем фрейм в который будем грузить файл(loadframe), лучше разбить страницу на обычные фреймы(*,0), чем пользоватся iframe, т.к. Опера не поддерживает поле contentWindow, через который и достается содержимое.
  • Ставим таймер, т.к. свойство document.readyState в Мозилле не существует и альтернатив вроде нет.
  • Достаем пришедшее содержимое: loadframe.document.body.innerHTML
Несколько замечаний:
  • все множественные пробелы в файле буду вырезанны в Мозилле
  • URL закодированный тект(все спец символы в виде кодов %число) будет сам по себе декодирован в ИЕ
  • Все спец символы(<,> и т.д.) будут закодированны в HTML мнемоники(&lt;,&gt ...).
  • Весь текст будет обернут в теги <pre></pre>

Видим что это не удобно. Теперь попробуем улучшить ситуацию используя скрипты на сервере, например PHP. Пишем скирпт который по запросу выдает нам содержимое в удобном виде(loader.php):
Код
<?php
 if(isset($_GET['file'])) {
   $path="./datafiles/".basename($_GET['file']); //достаем только имя файла
   if(is_file($path)) {// ищем его в ./datafiles/имя_файла
     $data=rawurlencode(file_get_contents($path)); //читаем и URL кодируем содержимое
?>
<html><head><script language="javascript" type=" text/javascript">
 if(top.frames.contentframe) {
   top.frames.contentframe.take_data("<?php echo $data; ?>");
 }
</script></head></html>
<?php
  exit();
  }
 }
?>
<html><head><script language="javascript" type=" text/javascript">
 if(top.frames.contentframe) {
    top.frames.contentframe.send_error("File not found");
 }
</script></head></html>

Теперь мы будем получать ответ сервера в виде JS скрипта. Имплементируем в contentframe(окно с содержимым) две функции: take_data(datastr) и send_error(msgstr);
Код
function take_data(data) {
alert("Собстна-а-а... вот это мы получили: "+unescape(data));
}
function send_error(msg) {
alert("Однако у Вас проблема... файл не существует.");
}

Запрос к серверу будет выглядеть как: _http://myserver.ru/loader.php?file=file_name
Вот так все будет работать замечательно.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0715 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.