Здравствуйте, я в 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>");
}
?>
Прошу простить, может быть предоставил много не нужной информации. Помогите пожалуйста.