Помощник
|
AJAX и циклический запуск |
1nSane
|
Сообщение
#1
|
||
|
|
||
|
|||
Letmetouchyou |
12.4.2010, 12:16;
Ответить: Letmetouchyou
Сообщение
#2
|
|
столько ссылком думаю быстро непроврешиь. даже если использовтаь аякс - асинхроно то будет проверяться, но при переходе со страниц все обнулиться.
Лутше сделать в БД поле жив/мертв и проверять кроном каждый час например. или добавить еше поле дата_проверки и при запросе пользователя, если дата провекри меньше текущее на час, но делать проверку. Казалось бы, все отлично, но столкнулся с проблемой... при таком раскладе JS функция doLoad не вызывается :( потому что так вы написали - ето невалидный js. onclick="doLoad('indexHTML'+i+','indexdiv'+i+','check.php?start='+i+');"
|
|
|
1nSane
|
Сообщение
#3
|
|
Letmetouchyou
С кроном это все понятно, это не проблема, но сейчас нужна именно такая реализация... т.е. человек должен видеть что процесс идет, он должен видеть не готовый список из 1000 пунктов, а постепенный вывод по 5 строк... По поводу невалидности... у меня там на самом деле через echo PHP, поэтому все там ОК ;) с событием onClick нет проблем, есть проблемы с вызовом напрямую, когда файл отдается как результат отработки AJAX. |
|
|
1nSane
|
Сообщение
#4
|
|
Неужели никому не требовалась подобная вещь?
Я сначала думал это от того, что при подгрузке через AJAX не срабатывают проверки на window.XMLHttpRequest и window.ActiveXObject, вставил в функцию простой Alert("тест") до проверок и все равно ничего не призошло :( |
|
|
Alcorn |
14.4.2010, 10:28;
Ответить: Alcorn
Сообщение
#5
|
|
Код не смотрел, но судя по описанию нужен простейший XMLHttpRequest в цикле. Отправили первый запрос, получили ответ (вывели данные на экран), затем создали новое соединение, прибавили шаг к параметру и так по кругу.
Как создать XMLHttpRequest и отправить данные - можно прочесть на http://xmlhttprequest.ru/ |
|
|
1nSane
|
Сообщение
#6
|
|
Alcorn, он и используется, вызывается страница1 через него, а из страницы1 страница2 уже автоматом не грузится :(
|
|
|
Alcorn |
14.4.2010, 10:50;
Ответить: Alcorn
Сообщение
#7
|
|
Чудным образом появились какие-то новые страницы...
Есть только одна главная страница, на ней расположен XMLHttpRequest. Далее в цикле идёт запрос на одну и ту же серверную страницу, например check.php. В check.php находится серверный код, опрашивающий базу и выдающий клиенту html-данные вида - линк1 ... жив линк2 ... мертв Никаких js-скриптов и клиентских функций там нет. |
|
|
1nSane
|
Сообщение
#8
|
|
Alcorn
Я так выразился, чтобы было яснее. Я в JS не силен, пытался цикл встроить в этот кусок кода: <script> function doLoad(html,div,url){ if (window.XMLHttpRequest){ request = new XMLHttpRequest(); request.onreadystatechange=function() {processRequestChange(html,div);}; request.open("GET",url,true); request.send(null); } else if (window.ActiveXObject){ request=new ActiveXObject("Microsoft.XMLHTTP"); if (request){ request.onreadystatechange=function() {processRequestChange(html,div);}; request.open("GET",url,true); request.send(); }}}function processRequestChange(html,div) { if (request.status == 200) { document.getElementById(div).style.display='block';document.getElementById(html).innerHTML=request.responseText; }} </script> но успеха это не принесло :( А именно, я задавал, скажем, параметр start от 0 до 49 с шагом 5, и он мне выводил только результат 45-49, а не все 0-49... |
|
|
Alcorn |
14.4.2010, 12:12;
Ответить: Alcorn
Сообщение
#9
|
|
[php]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head> <title></title> <script> x=0; function update(x) { req_s=new XMLHttpRequest(); req_s.open('POST','check.php?id='+x,true); req_s.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req_s.onreadystatechange = function() { if (req_s.readyState == 4 && req_s.status == 200) result(req_s.responseText); } req_s.send(''); } function result(s) { document.getElementById('data').innerHTML=s; update(x+5); // увеличиваем на 5 и вызываем снова } window.onload=function() { update(0); } </script> </head> <body> <div id="data"></div> <!-- сюда вставляются пришедшие данные --> </body> </html> [/php] Код не проверял, если что подстроите под себя сами. И цикл нужно прекратить по кодовому слову с сервера. |
|
|
1nSane
|
Сообщение
#10
|
|
Не работало пока не сделал Number(x)+5 :)
А вообще, перекроил сильно, подогнав под то, что было... Так как у меня запрос к БД, то я передаю start=0,end=мах_кол-во в JS сравниваем start и end, start идет дальше, в УРЛ (ГЕТом), а енд - никуда... Главное что я вычитал в примере, куда правильно вставлять вызов самого себя скрипта ;) Спасибо за подсказку! |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44765 | 19.7.2023, 10:03 автор: qpPeW |
|
Запуск и раскрутка YOUTUBE-канала найди клиента в ТОП-1 социальной видео сети |
7 | Porsche | 2268 | 23.3.2023, 17:34 автор: distrib095 |
|
Ищу специалиста Wordpress/PHP/JS/AJAX | 5 | by_roXe | 4283 | 4.11.2018, 17:09 автор: kikimora17 |
|
uBar.biz - инсталлы без меток, до 19 рублей за РФ запуск | 9 | Websharks | 5183 | 17.10.2017, 17:36 автор: Websharks |
|
Запуск CJ,Tube и др. услуги от студии ArtDesignXXX.com | 5 | carloswm | 5472 | 26.10.2016, 18:29 автор: carloswm |
Текстовая версия | Сейчас: 28.3.2024, 22:23 |