Собственно вопрос: У меня есть форма. при нажатии на кнопку идёт обработка формы на сервере, потом тудаже вместо текущей формы загружаются другие данные(ещё одна форма/ и так несколько раз). Т.е у меня пару формочек, и пользователь должен их заполнить по очерёдно. Перегуглился и толкового не нашел. А ещё. при обработке формы нужно чтобы выводился рисунок(какбы loading image) (пример на сайте хека.ру) Знающих прошу показать пример, ибо от Ajax'a далёк
Хек хек! index.php PHP: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>The Mafia - Undeground Security Private Community</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <script src="http://www.xeka.ru/js/jquery.js" type="text/javascript"></script> <script type="text/javascript"> function whois(domain) { $.post("whois.php", { domain: document.getElementById("domain").value }, function(data) { document.getElementById("res").innerHTML = data; }); } </script> <script type="text/javascript"> $(function(){ $('<img id="test" src="images/indicator.gif"/>') .ajaxStart(function() {$(this).show();}) .ajaxStop(function() {$(this).hide();}) .appendTo('#res'); }); </script> </head> <body> <?php echo '<div id="main">'; echo '<form method="post" enctype="multipart/form-data"><table> <tr><td>Enter domain name:</td><td><input type="text" id="domain" /></td></tr> <tr><td> </td><td align="right"><input type="button" value="Lookup" onclick="whois()" /></td></tr> </table></form>'; echo '<div id="res"></div>'; echo '</div>'; ?> whois.php PHP: <?php <?php error_reporting(0); if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { function encode($str, $type) { static $conv=''; if (!is_array ( $conv )) { $conv=array (); for($x=128; $x <=143; $x++ ) { $conv['utf'][] = chr(209).chr($x); $conv['win'][] = chr($x+112); } for( $x=144; $x <=191; $x++ ) { $conv['utf'][] = chr(208).chr($x); $conv['win'][] = chr($x+48); } $conv['utf'][] = chr(208).chr(129); $conv['win'][] = chr(168); $conv['utf'][] = chr(209).chr(145); $conv['win'][] = chr(184); } if( $type=='w' ) return str_replace ( $conv['utf'], $conv['win'], $str ); elseif( $type=='u' ) return str_replace ( $conv['win'], $conv['utf'], $str ); else return $str; } function whois($domain) { $dom = explode(".", $domain); if(substr($domain, 0, 4) == 'www.' && count($dom) >= 3) { $domain = substr($domain,4); } $zone = strtolower($dom[count($dom) - 1]); if(!empty($zone)) { $error = 0; if(in_array($zone, array('de'))) { $server = "whois.denic.de"; } else if(in_array($zone, array('nl'))) { $server = "whois.domain-registry.nl"; } else if(in_array($zone, array('ru', 'su'))) { $server = "whois.ripn.net"; } else if(in_array($zone, array('com', 'net', 'edu'))) { $server = "whois.crsnic.net"; } else if(in_array($zone, array('org'))) { $server = "whois.publicinterestregistry.net"; } else if(in_array($zone, array('info'))) { $server = "whois.afilias.net"; } else if(in_array($zone, array('biz'))) { $server = "whois.neulevel.biz"; } else if(in_array($zone, array('cc'))) { $server = 'ccwhois.verisign-grs.com'; } else if(in_array($zone, array('nu'))) { $server = 'whois.nic.nu'; } else if(in_array($zone, array('us'))) { $server = 'whois.nic.us'; } else if(in_array($zone, array('ws'))) { $server = 'whois.website.ws'; } else if(in_array($zone, array('tv'))) { $server = 'tvwhois.verisign-grs.com'; } else if(in_array($zone, array('ua'))) { $server = 'whois.net.ua'; } else { $error = 2; } } else { $error = 1; } if(!empty($domain) && $error == 0) { $fp = fsockopen($server, 43, &$errno, &$errstr, 30); if(!$fp) { $output = $errstr." (".$errno.")<br>\n"; } else { fputs($fp, $domain."\n"); while(!feof($fp)) { $output = $output . ereg_replace("\t", " ", fgets($fp,128)) . "<BR>\n"; } fclose($fp); } $output = str_replace("<BR>\n", "", $output); return "<textarea rows='20' cols='60'>".$output."</textarea>"; } else if($error == 2) { return $output = "<b>Ошибка:</b><br />1) Неверно задана зона <b>".htmlspecialchars(encode($zone))."</b> для домена ".htmlspecialchars(encode($domain))."<br/>2) В нашей базе нет информации по вашему домену<br>\n"; } else if($error == 1) { return $output = "Вы не ввели домен"; } } if($_POST['domain']) { if(empty($_POST['domain'])) { echo "<div align='center'><div class='error'>Заполните поле</div></div>"; } else { echo whois(encode($_POST['domain'])); } } } ?>
Isis если используешь jquery.js, изучи его функции (правда я только не давно сам изучил его полностью...) PHP: <script src="http://www.xeka.ru/js/jquery.js" type="text/javascript"></script> <script type="text/javascript"> function whois(domain) { $.post("whois.php", { domain: $('#domain').attr('value') }, function(data) { $('#res').empty().append(data); }); } </script>
Спасибо Isis. я и надеялся на твою помощь DIAgen, спасибо за исправление Теперь такой вопрос: Форма обрабатывается. Но нужно сделать так. чтобы когда форма обработалась, в <div id="main"> помещалась ещё одна форма. И так несколько раз/ Т,е старая форма убиралась и помещалась новая Там нужно использовать innerHTML для замены HTML кода? Покажите пример
еще посмотри тут http://myjoomla.ru/demo_ru/demonstratie.php и вот тут есть примеры для http://xajaxproject.org/download.php
DIAgen, мне больше понятен мой код и удобнее для меня.. На время работы никак влияет что означает что знать мне его более не надо
Где то приблизительно так PHP: <script type="text/javascript"> $('#main').empty().append('<form><!-- Сдесь твоя новая форма--></form>'); </script> Этот скрипт вставь в текст который возвращается при AJAX
Ну это твое дело, просто сначало не привычно, зато потом на много лучше и быстре делается все простой пример PHP: document.getElementById("domain").value или так... PHP: $('#domain').attr('value')