Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отображение процесса через AJAX
 
 автор: mshendn   (30.10.2009 в 00:22)   письмо автору
 
 

Следующая ситуация - через AJAX передаются параметры в скрипт расчета. Скрипт возвращает постепенно % выполнения процесса расчета (echo $r) . В головном скрипте пытаюсь сделать скольpящее отображение ( как в download процессах), анализирую
if(http.readyState == 3) и if(http.readyState == 4), но ничего не получается, скрипт расчета возвращает сразу все echo, а не по очереди. Понимаю, что так идолжно быть.
Как делают такие "бегунки"?

  Ответить  
 
 автор: Lelik   (30.10.2009 в 00:53)   письмо автору
 
   для: mshendn   (30.10.2009 в 00:22)
 

через флеш, или специально сервер настраивают (я забыл как эта хрень называется)

  Ответить  
 
 автор: AlexSol   (30.10.2009 в 07:27)   письмо автору
 
   для: mshendn   (30.10.2009 в 00:22)
 

вот http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=69148&page=1

ваш скрипт должен не по echo % выводить, а создавать отдельный файл и записывать значение в него

  Ответить  
 
 автор: mshdn   (31.10.2009 в 16:29)   письмо автору
 
   для: AlexSol   (30.10.2009 в 07:27)
 

Я пробовал сделать по примеру вашей ссылки. Нужный результат не получил.
1. сначала через аякс вызывается prim_gener.php
<?php
for($i=0;$i<1010;$i=$i+10)
{
$k=0;
for($j=1;$j<100000;$j++) $k=$k+$j; //просто задержка
$fi=fopen("prov.txt","w+");
fputs($fi,$i);
}
echo "it's end";
?>
2. потом через аякс вызывается prim1_gener.php
<?php
$fi=fopen("prov.txt","r");
$a=fgets($fi);
echo 'a='.$a;
?>
В результате сначала выводится a=
потом a=1000 - конечное значение.
Промежуточных не получается.
Дальше текс Javascript. Функция generate() - вызывается формой
(action="javascript:generate()")
<script Language="JavaScript"><!--

var http = createObject();
var http1 = createObject();
var response;

function createObject()
{
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
} else { request_type = new XMLHttpRequest(); }
return request_type;
}
function generate() // эту функцию вызывает форма
{
http.open('get','prim_gener.php' ); //prim_gener - выдает промежуточные данные в файл
http.onreadystatechange=answer;
http.send(null);
}

function answer()
{
var offer;
offer=document.getElementById('search');

if(http.readyState != 4)
{
http1.open('get','prim_gener1.php');
http1.onreadystatechange=answer1;
http1.send(null);
}

if(http.readyState == 4){
response = http.responseText;
offer.innerHTML = response; //это конец процесса, выдает prim_gener.php
}

}

function answer1()
{
var offer;
offer=document.getElementById('search');
if(http1.readyState == 4){
response = http1.responseText;
offer.innerHTML = response; // это будут промежуточные данные из файла, которые читает prim_gener1.php
}
}

//--></script>

  Ответить  
 
 автор: AlexSol   (31.10.2009 в 17:27)   письмо автору
 
   для: mshdn   (31.10.2009 в 16:29)
 

по-моему ошибка в js

вы должны
- запустить prim_gener.php на выполнение. аяксом или как-то иначе не важно
- не дожидаясь ответа от этого файла обратиться к prim1_gener.php
- вывести значение от prim1_gener.php и по интервалу или тут же снова обратиться к prim1_gener.php.
- повторять, пока от prim1_gener.php не будет получено останавливающего значения переменной

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования