Добрый вечер мне нужно чтобы определенный текст обновлялся раз в 1 минуту. Напишите примеры пожалуйста + какие сорцы для этого нужны, заранее большое СпаСиБо!!!!
Конечно очень плохо, что Вы понятия не имеете об этой технологи. Рассказывать тут про это я не вижу смысла - можете в качестве ознакомления посмотреть в Вики, а также полазить по поисковикам и прочесть несколько статеек на эту тему. Т.к. j1.5 имеет встроенный mootools, то мой пример будет основан именно на этом фреймворке. Никаких дополнительных библиотек подключать не нужно. З,Ы,: хотя я сам, больше предпочитаю использовать jQuery. К моему посту прилеплена простейшая схема работы аякса: 1. index.php выглядит примерно так: Код (PHP): <html> <head> <title>blablabla</title> <script src="script.js" type="text/javascript"></script> <!--подключаем js --> </head> <body> <div id="myDiv">Жми сюда!!!</div> <div id="resDiv"></div> <? //какой то код ?> </body> </head> 2. В результате нажатия на текст "Жми сюда!!!" управление переходит в script.js: Код (CODE): window.addEvent('domready', function() { //вешаем на див обработчик $('myDiv').addEvent('click', function() { //указываем урл скрипта var myRequest = new Request({method: 'get', url: 'lib.php'}); //если Вам необходимо передать параметры на сервер myRequest.send('param=ok'); //при удачном выполнении запроса обрабатываем событие onSuccess myRequest.onSuccess(responseText, responseXML) { $('resDiv').set('text', responseText); //записываем полученный от сервера ответ } /* в случае, если вы используете компонент джумлы, для обработки запроса, указываем index.php (который лежит в корне джумлы) var myRequest = new Request({method: 'get', url: 'index.php'}); также необходимо передать обязательные параметры myRequest.send('options=com_mycomponent&Itemid=123&tmpl=component&format=raw'); tmpl=component&format=raw - необходимы для того, что бы получить только те данные, которые выдает Ваш компонент */ }); }); 3. Ну и собственно бэк-енд lib.php Код (PHP): <? //если вы используете win-1251 кодировку, то необходимо передать хеадер, иначе в ИЕ Вы ничего не получите //header('Content-Type: text/javascript; charset=windows-1251'); echo "Если Вы видите это сообщение, то у Вас все получилось )))"; ?> В принципе все
И снова всем привет, проблемку с обновлением текста нужно исправить, мне нужно чтобы текст обновляся примерно раз в 60 секунд, но я не шарю в в этих запросах, так что помогите пожалуйста вот код запроса index.php Код (PHP): <html> <head> <title>Тестим AJAX</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <script language="JavaScript" type="text/javascript" src="ajax.js"></script> </head> <body leftmargin="0" topmargin="0" onload="setInterval('process()', 20000);"> <marquee scrolldelay="20" scrollamount="1" truespeed="truespeed" width="100%"> <span id="someDIV" class='wrapper' size='10px' color='#85C226' >{module 281}</span> </marquee> </body> </html> ajax.js Код (CODE): var xmlHttp = createXmlHttpRequestObject(); //Создаем объект подключения, чтобы впоследствие работать через него !!!Необходим!!! function createXmlHttpRequestObject() { var outVar; try { outVar = new XMLHttpRequest(); } catch(e) { var xmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); for (var i=0; i<xmlHttpVersions.length; i++) { try { outVar = new ActiveXObject(xmlHttpVersions[i]); } catch(e) {} } } if (!outVar) { //Здесь будет вызов альтернативной функции сохранения, //если создание объекта завершится неудачей. } else return outVar; } //Функция передачи запроса серверу function process() { if (xmlHttp) { try { //Здесь пишем адрес страницы .php, которая будет посылать строку, и параметр - для надежности :) var url = "http://80.64.18.105/song.php"; //Открываем соединение с сервером xmlHttp.open("GET", url, true); //Вызов функции обработки ответа сервера xmlHttp.onreadystatechange = handleStateChange; //Передача запроса xmlHttp.send(null); } catch (e) {} } } //Функция обработки ответа сервера function handleStateChange() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //В response помещаем текст ответа var response = xmlHttp.responseText; //alert(response); //Выводим пришедший текст на странице document.getElementById('someDIV').innerHTML = response; } } } function clearResponseText() { document.getElementById('someDIV').innerHTML = ""; } так вот вообщем поросту говоря незаморачиваясь, мне нужно вывести инфу с http://80.64.18.105/song.php Заранее огромное спаибо!!!!!
в любом случае Вы с помощью аякса тянете инфу, поэтому нужно просто установить таймер. Вас спасет setinterval()
Код (PHP): <body leftmargin="0" topmargin="0" onload="setInterval('process()', 2000);"> Но у меня почемуто один раз обновилось а далее стоит, странице перезагружать нужно
я как бы, если честно, то ни разу не работал с чистым аяксом .... постоянно использовал фреймворки ... думаю проблема в том, что Вам нужно заново инициализировать XMLHttpRequest(), т.е. сначала вызвать xmlHttp = createXmlHttpRequestObject(); а потом уже process() .... думаю все это можно сделать так, но не ручаюсь что будет работать ))) Код (CODE): function runAjax() { xmlHttp = createXmlHttpRequestObject(); process(); } Код (html): <body leftmargin="0" topmargin="0" onload="setInterval('runAjax()', 2000);">
Спасибо omfgpanda работает, только вот в ИЕ не хочет пахать запрос такой index2.php Код (PHP): <?php header('Content-type: text/html; charset=windows=1251'); print file_get_contents ("http://80.64.18.105/song.php"); ?> index.php Код (PHP): <head> <script language="JavaScript">var xmlHttp = createXmlHttpRequestObject(); //Создаем объект подключения, чтобы впоследствие работать через него !!!Необходим!!! function runAjax() { xmlHttp = createXmlHttpRequestObject(); process(); } function createXmlHttpRequestObject() { var outVar; try { outVar = new XMLHttpRequest(); } catch(e) { var xmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); for (var i=0; i<xmlHttpVersions.length; i++) { try { outVar = new ActiveXObject(xmlHttpVersions[i]); } catch(e) {} } } if (!outVar) { //Здесь будет вызов альтернативной функции сохранения, //если создание объекта завершится неудачей. } else return outVar; } //Функция передачи запроса серверу function process() { if (xmlHttp) { try { //Здесь пишем адрес страницы .php, которая будет посылать строку, и параметр - для надежности :) var url = "templates/eko_r/index2.php"; //Открываем соединение с сервером xmlHttp.open("GET", url, true); //Вызов функции обработки ответа сервера xmlHttp.onreadystatechange = handleStateChange; //Передача запроса xmlHttp.send(null); } catch (e) {} } } //Функция обработки ответа сервера function handleStateChange() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //В response помещаем текст ответа var response = xmlHttp.responseText; //alert(response); //Выводим пришедший текст на странице document.getElementById('someDIV').innerHTML = response; } } } function clearResponseText() { document.getElementById('someDIV').innerHTML = ""; }</script> </head> <body leftmargin="0" topmargin="0" onload="setInterval('runAjax()', 1500);">
Не правильно указана кодировка, замените на Код (PHP): header('Content-type: text/html; charset=windows-1251'); Конечно практичнее использовать утф-8.
omfgpanda , а ты невкурсе как мне несколько ПХП подключить чтобы несколько параметров указать Пример Код (PHP): <?php header('Content-type: text/html; charset=windows-1251');?> <script language="JavaScript"> var xmlHttp = createXmlHttpRequestObject(); function runAjax() { xmlHttp = createXmlHttpRequestObject(); process(); } function createXmlHttpRequestObject() { var outVar; try { outVar = new XMLHttpRequest(); } catch(e) { var xmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); for (var i=0; i<xmlHttpVersions.length; i++) { try { outVar = new ActiveXObject(xmlHttpVersions[i]); } catch(e) {} } } if (!outVar) { } else return outVar; } function process() { if (xmlHttp) { try { var url = "Что нужно вписать??"; xmlHttp.open("POST", url, true); xmlHttp.onreadystatechange = handleStateChange; xmlHttp.send(null); } catch (e) {} } } function handleStateChange() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { var response = xmlHttp.responseText; //alert(response); document.getElementById('Что нужно вписать??').innerHTML = response; } } } function clearResponseText() { document.getElementById('Что нужно вписать??').innerHTML = ""; } </script> Код (PHP): <div id="someDIV">Пожалуйста подождите...</div> <div id="someDIV1">Пожалуйста подождите...</div> <div id="someDIV3">Пожалуйста подождите...</div> и так далее Заранее благодарен !!!!!
так это... ничего не нужно подключать... просто в зависимости от передаваемых параметров в бэкенд - вызываешь ту или иную функцию.
просто видел анологичный скрипт кде на одной стр 3 параментя запрса текста Код (PHP): <?php if($_GET['l']=="pl"){ $pl="get_pl.php"; $div="someDIV1"; }else{ $pl="one_song.php"; $div="someDIV"; } ?> <script language="JavaScript"> var xmlHttp = createXmlHttpRequestObject(); function createXmlHttpRequestObject() { var outVar; try { outVar = new XMLHttpRequest(); } catch(e) { var xmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); for (var i=0; i<xmlHttpVersions.length; i++) { try { outVar = new ActiveXObject(xmlHttpVersions[i]); } catch(e) {} } } if (!outVar) { } else return outVar; } function process() { if (xmlHttp) { try { var url = "<?=$pl?>"; xmlHttp.open("<?=$met?>", url, true); xmlHttp.onreadystatechange = handleStateChange; xmlHttp.send(null); } catch (e) {} } } function handleStateChange() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { var response = xmlHttp.responseText; //alert(response); document.getElementById('<?=$div?>').innerHTML = response; } } } function clearResponseText() { document.getElementById('<?=$div?>').innerHTML = ""; } </script> </HEAD> <BODY BGCOLOR=#FFFFFF LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0 onload="setInterval('process()', 40000)"> <table border=0 cellpadding=0 cellspacing=0> <tr> <td vAlign=top> <? if(isset($l)){ $flash="flash/main.swf"; }else{ if(isset($prog)){ $flash="flash/main.swf"; }else{ $flash="load.swf"; } } ?> <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="775" HEIGHT="120" id="main"> <PARAM NAME=movie VALUE="<? print $flash; ?>"> <PARAM NAME=quality VALUE=high> <EMBED src="<? print $flash; ?>" quality=high bgcolor=#FFFFFF WIDTH="775" HEIGHT="120" NAME="main" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"> </EMBED> </OBJECT> <? print " </td> </tr> </table> <TABLE width=775 border=0 cellpadding=0 cellspacing=0> <TR> <TD width=229 valign=top> <table border=0 cellpadding=0 cellspacing=0> <tr> <td><img width=176 height=4 src='$url/pix/efefef.gif'></td> <td><img width=4 height=4 src='$url/pix/img_ef_ef.gif'></td> <td><img width=30 height=4 src='$url/pix/0.gif'></td> </tr> </table> <table border=0 cellpadding=0 cellspacing=0> <tr> <TD width=220 background='pix/back_top.gif'> <table width=100% border=0 cellpadding=1 cellspacing=0> <tr> <td class='top'> "; @include ("date.php"); print " </td> </tr> <tr> <td class='top'> В эфире: "; $dj = file_get_contents("http://80.64.18.105/online_dj.txt"); print" {$dj} </td> </tr> </table> </TD> <TD><img width=6 height=34 src='$url/pix/img_top_u.gif'></td> </TR> </table> <TD vAlign=top> <table border=0 cellpadding=0 cellspacing=0> <tr> <td><img width=3 height=20 src='$url/pix/0.gif'></td> <td><img src='$url/pix/img_line_00.gif'></td> <TD> <table border=0 cellpadding=0 cellspacing=0> <tr> <td> <table width=100% border=0 cellpadding=0 cellspacing=0> <tr> <td width=5></td> <td class=text2 height=15><div class=text2 id=\"someDIV\"><img width=6 height=5 src='pix/432342.gif'>"; if(isset($_GET['l']) && $_GET['l']=="pl"){ echo $def_str; }else{ include "one_song.php"; } echo "</div></td> </tr> </table> </td> </tr> <tr> <td><img width=550 height=5 src='$url/pix/11.gif'></td> </tr> </table> </TD> </tr> </table> </TD> </TR> </TABLE>"; /* <iframe name=\"top\" src=\"http://ekoradio.ru/one_song.php\" width=750 height=14 border=0 scrolling=\"no\" frameborder=0></iframe> */ ?>
их может быть хоть 10 ) просто в каждом запросе передаются разные параметры и в зависимости от того, какой параметр был передан возвращается определенный ответ.
Собственно не работает данный код. FireBug например пишет: Код (CODE): missing ; before statement myRequest.onSuccess(responseText, responseXML) {\n