Передача значения в скрипт из поля input
Здравствуйте, я в javascript совсем не силен мягко говоря, но вот возникла такая необходимость переработать скрипт проверки занятости доменов под jquery. он передает значения в php, a от туда уже берется результат. Исходный скрипт работает.
Исходник скрипта var xmlHttps function ShowDom(domain,zona) { xmlHttps=GetXmlHttpObject(); if (xmlHttps==null) { alert ("Browser does not support HTTP Request"); return; } if (domain==null) { alert ("Нет указан домен!"); return; } if (domain=='') { alert ("Нет указан домен!"); return; } var domname = domain + "." + zona; var url="gets.php?domain="+domname; url=url+"&sid="+Math.random(); xmlHttps.onreadystatechange=stateChanged ; xmlHttps.open("GET",url,true); xmlHttps.send(null); } function stateChanged() { if (xmlHttps.readyState==4 || xmlHttps.readyState=="complete") { document.getElementById("txtHint").innerHTML=xmlHttps.responseText; } else { document.getElementById("txtHint").innerHTML='<div id="txtHint"><table border="0" height="100%" width="100%" align="center"><tr align="center" valign="middle"><td width="100%" align="center" valign="middle" height="100%"><b>Загрузка информации ...</b>.</td></tr></table></div>'; } } function GetXmlHttpObject() { var xmlHttps=null; try { // Firefox, Opera 8.0+, Safari xmlHttps=new XMLHttpRequest(); } catch (e) { //Internet Explorer try { xmlHttps=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttps=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttps; }а вот что получилось у меня //DOMIAN NAME VALIDATION $('#check').click(function(domain,ext){ xmlHttps=GetXmlHttpObject(); rules: { domain: { required: true } } var domname = domain + ext; var url="whois.php?domain="+domname; url=url+"&sid="+Math.random(); xmlHttps.onreadystatechange = function stateChanged() { if (xmlHttps.readyState==4 || xmlHttps.readyState=="complete") { document.getElementById("txtHint").innerHTML=xmlHttps.responseText; } else { document.getElementById("txtHint").innerHTML='<div id="txtHint"><div class="dt-sc-info-box"><p>Загрузка информации ...</p></div></div>'; } } xmlHttps.open("GET",url,true); xmlHttps.send(null); }) function GetXmlHttpObject() { var xmlHttps=null; try { // Firefox, Opera 8.0+, Safari xmlHttps=new XMLHttpRequest(); } catch (e) { //Internet Explorer try { xmlHttps=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttps=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttps; }и вот такая форма: <form class="search-form domain-search" name="frmDomainSearch" novalidate="novalidate" id="frmDomainSearch"> <div class="dt-sc-three-fifth column first"> <input type="text" placeholder="В поисках доменного имени?" value="" name="domain" id="domain"> </div> <div class="dt-sc-one-fifth column"> <span class="selection-box"><select class="domains valid" name="domains" id="ext"> <option selected="selected">.ru</option> <option>.su</option> <option>.com</option> <option>.org</option> </select></span> </div> <div class="dt-sc-one-fifth column"> <input type="button" id="check" class="dt-sc-button medium" name="domains_ok" value="Проверить"></form>Внимание вопрос, где я накосячил, что при нажатии кнопки я получаю результат: [object Object]undefined. Если я меняю var domname = domain + "#ext";получаю: [object Object] а если var domname = "#domain" + "#ext"; То со мной начинает разговаривать php и выдает осмысленную фразу:Проверьте правильность введенных данных! и сам php скрипт: <?php class whois { var $port = 43; var $MAXLEN = 1024; // Тип запроса var $QUERY_TYPE = "domain"; var $DEFAULT_SERVER = "whois.crsnic.net"; //Настрока повторных попыток var $MAX_RETRIES = 3; var $SLEEP_VAL = 1; var $RETRY = 0; var $FOUND = 0; // устанавливается в 0 если запись не найдена var $ERROR = 0; // устанавливает признак ошибки var $DATA_MIN = 8; //минимум данных свидетельствующих о том что сервер работает var $DATA_COUNT = 0; //Переменные. берутся из запроса var $ORGANIZATION; var $ORG_HANDLE; var $ORG_ADDRESS; // массив var $DOMAIN_NAME; var $DOMAIN_STATUS; var $ADMIN; // массив: "name", "nic" и "email" var $TECH; // массив: "name", "nic" и "email" var $ZONE; // массив: "name", "nic" и "email" var $BILLING; var $UPDATED; var $CREATED; var $DNS_NAME=array(); // массив с именами DNS серверов var $HANDLES; var $IP=""; //список серверов по зонам var $SERVER = array( "com"=>"whois.crsnic.net", "net"=>"whois.crsnic.net", "edu"=>"whois.educause.net", var $TLD; var $RAWINFO; var $DNSINFO; //обращение к WHOIS серверу function connect ($server) { while($this->RETRY <= $this->MAX_RETRIES) { $ptr=fsockopen($server, $this->port); if($ptr>0) { $this->ERROR=0; return($ptr); }else { $this->ERROR++; $this->RETRY++; sleep($this->SLEEP_VAL); } } } //Получает данные и загружает их в массив function rawlookup ($query) { $array=array(); $this->FOUND=1; $query=strtolower(trim($query)); if(strlen($query)<=2) { $this->ERROR=1; return($array); } //устанавливаем сервер по умолчанию $server=$this->DEFAULT_SERVER; //пытаемся переназначить его if($this->QUERY_TYPE=="domain") { ereg(".+\.(.+)\.{0,1}",$query,$backrefs); if(isset($backrefs[1]) && strlen($backrefs[1])>0 && isset($this->SERVER[$backrefs[1]])) { $this->TLD=$backrefs[1]; $server=$this->SERVER[$this->TLD]; } } $ptr=$this->connect($server); if($ptr) { $query .= "\n"; fputs($ptr, $query); $i=0; while(!feof($ptr)) { $array[$i]=fgets($ptr,$this->MAXLEN); $this->DATA_COUNT+=strlen(trim($array[$i])); if(eregi("No match for", $array[$i]) || eregi("Not found", $array[$i]) || eregi("No entries found for", $array[$i])) { $this->FOUND=0; break; } if(eregi("WHOIS database is down",$array[$i]) || eregi("Please wait a while and try again",$array[$i])) { $this->ERROR=1; $this->FOUND=0; break; } $i++; } fclose($ptr); if($this->DATA_COUNT>$this->DATA_MIN && $this->ERROR==0 && $this->FOUND==1) { return($array); } } //в случае ошибки возвращаем пустой массив return (array()); } // парсинг результатов function parsezone ($array) { $result=array(); if(!isset($array) || !is_array($array) || count($array)<=3) { $this->FOUND=0; return $result; } $cnt=count($array); $rescnt=0; $i=0; $isinfo=true; while($i<$cnt) { if(!$isinfo) { $str=trim($array[$i]); $result[$rescnt]=$str; //Извлекаем настройки DNS if(eregi("NAME SERVER", $str) || eregi("NSERVER", $str)) { $str=trim(substr($str, strpos($str, ":")+1)); if($pos=strpos($str, " ")) { $str=substr($str, 0, $pos); } if(substr($str, -1)==".") { $str=substr($str, 0, -1); } $this->DNS_NAME[]=strtolower($str); } $rescnt++; } if(trim($array[$i])=="" && $isinfo) { $isinfo=false; } $i++; } return $result; } function zonelookup ($query) { $query=trim($query); $this->RAWINFO=$this->rawlookup($query); if($this->FOUND) { $this->RAWINFO=$this->parsezone($this->RAWINFO); } if($this->FOUND==0) { return; } if($this->dns_lookup($query)) { $this->IP=gethostbyname($query); $this->build_dns($query); } } function build_dns($query) { $cnt=0; // $temp=dns_get_record($query, "NS"); foreach($this->DNS_NAME AS $dns) { $this->DNSINFO[$cnt]="NS: ".$dns."\tinternet address = ".gethostbyname($dns); $cnt++; } if(getmxrr($query, $temp)) { foreach($temp AS $dns) { $this->DNSINFO[$cnt]="MX: ".$dns."\tinternet address = ".gethostbyname($dns); $cnt++; } } } function dns_lookup($query) { return checkdnsrr($query,"ANY"); } }; if(isset($_GET["domain"]) && strlen($_GET["domain"])>0) { $target=$_GET["domain"]; $whois=new whois(); $whois->zonelookup($target); if($whois->ERROR==0) { if(is_array($whois->RAWINFO) && count($whois->RAWINFO)>7 && $whois->FOUND==1) { echo("<div class='dt-sc-error-box'><p><b>К сожалению домен занят!</b></p></div>"); } else { echo("<div class='dt-sc-success-box'><p><b>".$target."</b> - <b>Домен свободен</b></p></div><a class='dt-sc-button medium aligncenter lightgreen' target='_blank' href='#'>Регистрация</a>"); } }else { echo("<div class='dt-sc-error-box'><p><b>Ошибка запроса. Попробуйте еще раз!</b></p></div>"); } } else { echo("<div class='dt-sc-warning-box'><p><b>Проверьте правильность введенных данных!</b></p></div>"); } ?> Прошу простить, может быть предоставил много не нужной информации. Помогите пожалуйста. |
Ура я починил скрипт. Я не совсем идиот, но алерты не работают. :) Может кто поможет его оптимизировать?
var xmlHttps //DOMIAN NAME VALIDATION $('#check').click(function(domain,ext){ xmlHttps=GetXmlHttpObject(); if (xmlHttps==null) { alert ("Browser does not support HTTP Request"); return; } if (domain==null) { alert ("Нет указан домен!"); return; } if (domain=='') { alert ("Нет указан домен!"); return; } var domain = document.getElementById('domain').value; var ext = document.getElementById('ext').value; var domname = domain + ext; var url="whois.php?domain="+domname; url=url+"&sid="+Math.random(); xmlHttps.onreadystatechange = function stateChanged() { if (xmlHttps.readyState==4 || xmlHttps.readyState=="complete") { document.getElementById("txtHint").innerHTML=xmlHttps.responseText; } else { document.getElementById("txtHint").innerHTML='<div id="txtHint"><div class="dt-sc-info-box"><p>Загрузка информации ...</p></div></div>'; } } xmlHttps.open("GET",url,true); xmlHttps.send(null); }) function GetXmlHttpObject() { var xmlHttps=null; try { // Firefox, Opera 8.0+, Safari xmlHttps=new XMLHttpRequest(); } catch (e) { //Internet Explorer try { xmlHttps=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttps=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttps; } Работоспособный вариант. Я больше чем уверен в огромном количестве костылей в скрипте. помогите сделать его элегантнее, пожалуйста. Спасибо. Можно ли валидацию прикрутить как тут: $('form[name="frmDomainSearch"]').validate({ rules: { domain: { required: true } }, errorPlacement: function(error, element) { } });? |
На современном рынке товаров и услуг наличие своего сайта как для компании, так и для частного лица — это не роскошь, а необходимость. Так же, как и возможность общения с клиентом по электронной почте.
С помощью сервиса OF.ua вы получаете решение этих двух задач сразу: эксклюзивное имя сайта и стильное имя почты проверка домена на занятость https://of.ua/ |
Часовой пояс GMT +3, время: 18:48. |