|
|
|
| Следующая ситуация - через AJAX передаются параметры в скрипт расчета. Скрипт возвращает постепенно % выполнения процесса расчета (echo $r) . В головном скрипте пытаюсь сделать скольpящее отображение ( как в download процессах), анализирую
if(http.readyState == 3) и if(http.readyState == 4), но ничего не получается, скрипт расчета возвращает сразу все echo, а не по очереди. Понимаю, что так идолжно быть.
Как делают такие "бегунки"? | |
|
|
|
|
|
|
|
для: mshendn
(30.10.2009 в 00:22)
| | через флеш, или специально сервер настраивают (я забыл как эта хрень называется) | |
|
|
|
|
|
|
|
для: mshendn
(30.10.2009 в 00:22)
| | вот http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=69148&page=1
ваш скрипт должен не по echo % выводить, а создавать отдельный файл и записывать значение в него | |
|
|
|
|
|
|
|
для: 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> | |
|
|
|
|
|
|
|
для: mshdn
(31.10.2009 в 16:29)
| | по-моему ошибка в js
вы должны
- запустить prim_gener.php на выполнение. аяксом или как-то иначе не важно
- не дожидаясь ответа от этого файла обратиться к prim1_gener.php
- вывести значение от prim1_gener.php и по интервалу или тут же снова обратиться к prim1_gener.php.
- повторять, пока от prim1_gener.php не будет получено останавливающего значения переменной | |
|
|
|