Как узнать что получены данные???
От: MentalSky  
Дата: 04.02.03 13:12
Оценка:
Привет всем!
Мне нужно по Response.Write передавать клиенту данные в виде xml или в виде простого текста, данные сабмитятся на скрытый инлайн фрейм — как я узнаю что пришли данные??? событие onload у iframe почемуто отсутсвует. Пользую ASP и VBScript
Re: Как узнать что получены данные???
От: TSS Россия http://www.sdl.ru
Дата: 04.02.03 13:29
Оценка:
Здравствуйте, MentalSky, Вы писали:

MS>Привет всем!

MS>Мне нужно по Response.Write передавать клиенту данные в виде xml или в виде простого текста, данные сабмитятся на скрытый инлайн фрейм — как я узнаю что пришли данные??? событие onload у iframe почемуто отсутсвует. Пользую ASP и VBScript

См. документацию на onreadystatechange() event.
Signed, [TSS] /SDL/
Re[2]: Как узнать что получены данные???
От: MentalSky  
Дата: 04.02.03 13:40
Оценка:
Здравствуйте, TSS, Вы писали:

TSS>См. документацию на onreadystatechange() event.


Уже проверил — не срабатывает этот евент. Ничего не понимаю...
Вот еще что смущает... на сервер я делаю Response.Write("blahblah")

На форме после сабмита я это слово наблюдаю во фрейме, смотрю что есть в my_frame.innerHTML, innerTEXT — а там ничего...

Дело в том что я пишу рабочее место оператора — если делать все "как надо" — то в ответ на каждое нажатие кнопок на форме придется перегружать форму — а это увеличенный траффик, а за него меня убьют Вот и птыабсь пользовать DHTML совместно с ASP
Re[3]: Как узнать что получены данные???
От: TSS Россия http://www.sdl.ru
Дата: 04.02.03 13:48
Оценка:
Здравствуйте, MentalSky, Вы писали:

TSS>>См. документацию на onreadystatechange() event.


MS>Уже проверил — не срабатывает этот евент. Ничего не понимаю...

MS>Вот еще что смущает... на сервер я делаю Response.Write("blahblah")

MS>На форме после сабмита я это слово наблюдаю во фрейме, смотрю что есть в my_frame.innerHTML, innerTEXT — а там ничего...


Если во фрейм через Response.Write() пишется примерно следующее: "<xml>some text</xml>", то innerHTML действительно даст этот текст. Если же запросить innerText, не возвратится ничего, что вполне естественно, т.к. сам по себе фрейм текста не имеет -- он имеет теги XML/HTML.

MS>Дело в том что я пишу рабочее место оператора — если делать все "как надо" — то в ответ на каждое нажатие кнопок на форме придется перегружать форму — а это увеличенный траффик, а за него меня убьют Вот и птыабсь пользовать DHTML совместно с ASP


Могу посоветовать следующее. Во фрейм пишешь:
<html><head></head><body>
<xml id="dataSource">
  <!-- some data here -->
</xml>
<script language="JScript">
  var o = document.all["dataSource"];
  window.parent.document.all["someContent"].innerText = o.XMLDocument.xml;
</script>
</body></html>


Если я ничего не наврал в "window.parent.document...", то должно сработать.
Да, в главной странице (на которой лежит скрытый iframe), сделай какой-нить элемент (например <DIV>) с ID="someConent".
По такому принципу в свое время было сделано дерево топиков на MSDN-е.
Signed, [TSS] /SDL/
Re[4]: Как узнать что получены данные???
От: MentalSky  
Дата: 04.02.03 13:54
Оценка:
Здравствуйте, TSS, Вы писали:

TSS>Если во фрейм через Response.Write() пишется примерно следующее: "<xml>some text</xml>", то innerHTML действительно даст этот текст. Если же запросить innerText, не возвратится ничего, что вполне естественно, т.к. сам по себе фрейм текста не имеет -- он имеет теги XML/HTML.


Сделал Response.Write("<xml>some text</xml>") — в innerHTML ничего, как и во фрейме ничего не видно...

TSS>Могу посоветовать следующее. Во фрейм пишешь:

TSS>
TSS><html><head></head><body>
TSS><xml id="dataSource">
TSS>  <!-- some data here -->
TSS></xml>
TSS><script language="JScript">
TSS>  var o = document.all["dataSource"];
TSS>  window.parent.document.all["someContent"].innerText = o.XMLDocument.xml;
TSS></script>
TSS></body></html>
TSS>

TSS>Если я ничего не наврал в "window.parent.document...", то должно сработать.
TSS>Да, в главной странице (на которой лежит скрытый iframe), сделай какой-нить элемент (например <DIV>) с ID="someConent".
TSS>По такому принципу в свое время было сделано дерево топиков на MSDN-е.

Да, это должно работать... да только как увидит админ что такое в минуту раз 20ть по сети бегает ((
Re[4]: Как узнать что получены данные???
От: MentalSky  
Дата: 04.02.03 14:14
Оценка:
Так, с содержимым iframe после сабмита разобрался — получилось через document.body.innerText
Теперь бы евент сделать на получение формы, нет, ну почему в msdn указан евент onload, а в природе его не наблюдается???... ужас как не охота через вызов скрипта из тела полученного документа...
Re[5]: Как узнать что получены данные???
От: TSS Россия http://www.sdl.ru
Дата: 04.02.03 14:23
Оценка:
Здравствуйте, MentalSky, Вы писали:

MS>Так, с содержимым iframe после сабмита разобрался — получилось через document.body.innerText

MS>Теперь бы евент сделать на получение формы, нет, ну почему в msdn указан евент onload, а в природе его не наблюдается???... ужас как не охота через вызов скрипта из тела полученного документа...

А он вызывается только один раз. При первоначальной загрузке фрейма. Потом -- не вызывается.
Workaround: добавь в конец текста код с вызовом функции обработки onload.
Signed, [TSS] /SDL/
Re[6]: Как узнать что получены данные???
От: MentalSky  
Дата: 04.02.03 14:36
Оценка:
Здравствуйте, TSS, Вы писали:

TSS>Здравствуйте, MentalSky, Вы писали:


MS>>Так, с содержимым iframe после сабмита разобрался — получилось через document.body.innerText

MS>>Теперь бы евент сделать на получение формы, нет, ну почему в msdn указан евент onload, а в природе его не наблюдается???... ужас как не охота через вызов скрипта из тела полученного документа...

TSS>А он вызывается только один раз. При первоначальной загрузке фрейма. Потом -- не вызывается.

TSS>Workaround: добавь в конец текста код с вызовом функции обработки onload.

Где добавить? если во фрейм я буду возвращать например не полноценную хтмл-страницу, а теги вида <mydata id=mydata value=data>или что то в этом роде???
Re[7]: Как узнать что получены данные???
От: TSS Россия http://www.sdl.ru
Дата: 04.02.03 15:03
Оценка:
Здравствуйте, MentalSky, Вы писали:

TSS>>А он вызывается только один раз. При первоначальной загрузке фрейма. Потом -- не вызывается.

TSS>>Workaround: добавь в конец текста код с вызовом функции обработки onload.

MS>Где добавить? если во фрейм я буду возвращать например не полноценную хтмл-страницу, а теги вида <mydata id=mydata value=data>или что то в этом роде???


Допустим, есть страница (1.html):
<html>
<head>
</head>
<body>
<p>test page</p>
  <script language="jscript">
    function processIFrameOnLoad (src)
    {
      alert ("caller is: " + src + "\ndata is: " + document.frames["someIFrame"].document.body.innerHTML);
    }
    function clk ()
    {
      document.frames["someIFrame"].document.location.href = "test2.html";
    }
  </script>
<button onclick="clk();">click</button>
<iframe src="test.html" onload="processIFrameOnLoad('iframeOnLoad')" id="someIFrame"></iframe>
</body>
</html>


И есть еще пара страниц (test.html и test2.html):
<html><body>
<p>test</p>
<script>
  window.parent.processIFrameOnLoad ("loaded html");
</script>
</body></html>

<html><body>
<p>test</p>
<script>
  window.parent.processIFrameOnLoad ("loaded html 2");
</script>
</body></html>


Сохрани их и запусти -- может что и прояснится.
test.html и test2.html -- это примеры ответов сервера по Response.Write(). Для простоты для запроса используется <button onclick="" />
Signed, [TSS] /SDL/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.