下面是一段asp代码,是实现域名ajax的查询功能,其实最主要是getHTTPPage这个函数,我不知道在PHP是用什么函数实现的,代码想转成PHP代码,望熟悉的高手能指点一下,不甚感激!ASP代码:
<%
On Error Resume Next
Server.ScriptTimeOut=9999999
Function getHTTPPage(jnkcUrl)
Dim CJXMLHTTP
Set CJXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
CJXMLHTTP.Open "GET", jnkcUrl, False, "", ""
CJXMLHTTP.Send
getHTTPPage = CJXMLHTTP.ResponseText
Set CJXMLHTTP = Nothing
End Function
%>
<%
Response.CharSet = "GB2312"
response.write "<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>"
response.write "<ul class='domain-list2'>"types=split(request("checkbox"),",")
dns=trim(request("dns"))
for i=0 to ubound(types)
url="http://panda.www.net.cn/cgi-bin/check.cgi?area_domain="&dns&"."&trim(types(i))&" "
wstr=getHTTPPage(url)
if instr(wstr,"Domain name is not available")>0 then
mes="已注册"
elseif instr(wstr,"Domain name is available")>0 then
mes="未注册"
else
mes="网络延迟,请重新提交!"
end if
response.write "<li><span class='bfont'>"&dns& "."&trim(types(i))&"</span> <span class='rfont'>" & mes & "</span></li>"
next
response.write "</ul>"%>
<%
On Error Resume Next
Server.ScriptTimeOut=9999999
Function getHTTPPage(jnkcUrl)
Dim CJXMLHTTP
Set CJXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
CJXMLHTTP.Open "GET", jnkcUrl, False, "", ""
CJXMLHTTP.Send
getHTTPPage = CJXMLHTTP.ResponseText
Set CJXMLHTTP = Nothing
End Function
%>
<%
Response.CharSet = "GB2312"
response.write "<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>"
response.write "<ul class='domain-list2'>"types=split(request("checkbox"),",")
dns=trim(request("dns"))
for i=0 to ubound(types)
url="http://panda.www.net.cn/cgi-bin/check.cgi?area_domain="&dns&"."&trim(types(i))&" "
wstr=getHTTPPage(url)
if instr(wstr,"Domain name is not available")>0 then
mes="已注册"
elseif instr(wstr,"Domain name is available")>0 then
mes="未注册"
else
mes="网络延迟,请重新提交!"
end if
response.write "<li><span class='bfont'>"&dns& "."&trim(types(i))&"</span> <span class='rfont'>" & mes & "</span></li>"
next
response.write "</ul>"%>
解决方案 »
- ShowChildClass
- 计算2日期之间的天数
- 有3个函数的定义看不懂?
- php传递参数的方式有哪些?
- mb_convert_encoding gb2312转换UTF8个别字出现乱码
- 这个正则表达式中的+?什么意思?
- 使用ob_start生成静态页面在.net中有没有类似的方法
- 新手求问关于php发送html格式邮件的简单问题,急!线上等... ...
- 如何测试网络速度?
- 在Red Hat Linux 9+Apache2.0.48+php4.3.4+ZendOptimizer2.1.0b MySQL5.0.0-0+Tomcat5.0.16+ j2sdk1.4.2.03整合
- php 中文件上传问题
- 安装使用PHPnow后程序无法使用问题
set_time_limit(0);
Function getHTTPPage($jnkcUrl)
{$ch = curl_init($jnkcUrl);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,50);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response=curl_exec($ch);
curl_close($ch);} //Response.CharSet = "GB2312"echo iconv("UTF-8", "GB2312","<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>");
echo iconv("UTF-8", "GB2312","<ul class='domain-list2'>");
$types=explode(",",$_GET["checkbox"]);
//$types=explode(",","com,cn,net");
$dns=trim($_GET["dns"]);
//$dns="baidu"; foreach($types as $a)
{
$url="http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=$dns.".trim($a) ;
$wstr=getHTTPPage($url);
if (strpos($wstr,"Domain name is not available")>=0)
$mes="已注册";
elseif (strpos($wstr,"Domain name is available")>=0)
$mes="未注册";
else
$mes="网络延迟,请重新提交";
echo iconv("UTF-8", "GB2312","<li><span class='bfont'>$dns.".trim($a)."</span> <span class='rfont'>$mes </span></li>");
} echo "</ul>";
测试已经通过的,直接拿去用吧。
set_time_limit(0);
Function getHTTPPage($jnkcUrl)
{$ch = curl_init($jnkcUrl);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,50);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response=curl_exec($ch);curl_close($ch);
return $response;
}
//Response.CharSet = "GB2312"echo iconv("UTF-8", "GB2312","<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>");
echo iconv("UTF-8", "GB2312","<ul class='domain-list2'>");
$types=explode(",",$_GET["checkbox"]);
//$types=explode(",","com,cn,net");
$dns=trim($_GET["dns"]);
//$dns="baidu"; foreach($types as $a)
{
$url="http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=$dns.".trim($a) ;
$wstr=getHTTPPage($url);
if (strpos($wstr,"Domain name is not available")!=false)
$mes="已注册";
elseif (strpos($wstr,"Domain name is available")!=false)
$mes="未注册";
else
$mes="网络延迟,请重新提交";
echo iconv("UTF-8", "GB2312","<li><span class='bfont'>$dns.".trim($a)."</span> <span class='rfont'>$mes </span></li>");
} echo "</ul>";
但是只用echo是可以的,加上iconv这个函数转换字符就出错了.
对了,我网站的编码是GB2312的,会不会跟这样冲突呢?
一个是上面的函数忘了返回值了return $response;
一个是strpos函数搜索字符串 当能搜索到的时候范围大于等于0的数字,搜索不到了就范围false。而false在if判断中也是大于零的,所以这个地方也改了一下
要是非要保存成GB2312网页,就不要用这个函数直接echo "<p style='height:30px;'><span class='rfont'>域名查询结果:</span></p>";
var xmlHttp
function check_domain()
{
var elements = document.getElementsByName("checkbox");
var checkbox_str = "";
for(var i=0;i<elements.length;i++){
if(elements[i].checked){
checkbox_str=checkbox_str +"&checkbox="+ elements[i].value;
}
} //var url="check.asp?sid=" + Math.random() + "&dns="+ document.checkdomain.dns.value + "&checkbox="+ document.checkdomain.checkbox[0].value + "&checkbox="+ document.checkdomain.checkbox[1].value
var url="/include/domain/check.php?sid=" + Math.random() + "&dns="+ document.checkdomain.dns.value + checkbox_strxmlHttp=GetXmlHttpObject(stateChanged)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
document.getElementById("txtHint").innerHTML="<img src='/images/load.gif' alt='Loading Data' /><br/><span class='rfont'>请稍候,域名查询中..</span>";
} function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
} function GetXmlHttpObject(handler)
{
var objXmlHttp=nullif (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera")
return;
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP"if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP"
}
try
{
objXmlHttp=new ActiveXObject(strName)
objXmlHttp.onreadystatechange=handler
return objXmlHttp
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled")
return
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest()
objXmlHttp.onload=handler
objXmlHttp.onerror=handler
return objXmlHttp
}
}
HTML代码:
<form name="checkdomain" method="post" action="/include/domain/check.php" onkeydown="if(event.keyCode==13){return false;}" >
<div class="domain-title">
<span class="domain-www">www.</span>
<input name="dns" type="text" class="domain-input" id="dns" />
<input type="button" class="button1" name="submit" value="" id="submit" onclick="javascript:return check_domain();" />
</div>
<ul class="domain-list1">
<li><input type="checkbox" name="checkbox" value="com" checked="checked" />.com</li>
<li><input type="checkbox" name="checkbox" value="net" checked="checked" />.net</li>
<li><input type="checkbox" name="checkbox" value="org" checked="checked" />.org</li>
<li><input type="checkbox" name="checkbox" value="cc" checked="checked" />.cc</li>
<li><input type="checkbox" name="checkbox" value="info" />.info</li>
<li><input type="checkbox" name="checkbox" value="biz" />.biz</li>
<li><input type="checkbox" name="checkbox" value="name" />.name</li>
<li><input type="checkbox" name="checkbox" value="mobi" />.mobi</li>
<li><input type="checkbox" name="checkbox" value="cn" checked="checked" />.cn</li>
<li><input type="checkbox" name="checkbox" value="com.cn" checked="checked" />.com.cn</li>
<li><input type="checkbox" name="checkbox" value="net.cn" />.net.cn</li>
<li><input type="checkbox" name="checkbox" value="org.cn" />.org.cn</li>
</ul>
</form>
我都有点不好意思了...我试了一下,还是不行,我html换成get或者post的,结果都有一样,只显示第一条纪录..
<input type="checkbox" name="checkbox" value="com" checked="checked" />
你所有的input的name属性值都是checkbox,能得到其他的记录才怪啊。
但我之前用asp也是可以读出来的.
function check_domain()
{
var elements = document.getElementsByName("checkbox");
var checkbox_str = "";
for(var i=0;i<elements.length;i++){
if(elements[i].checked){
checkbox_str=checkbox_str +"&checkbox="+ elements[i].value;
}
} var url="/include/domain/check.php?sid=" + Math.random() + "&dns="+ document.checkdomain.dns.value + checkbox_str但在php中这样的数组就没了,晕了...
<li><input type="checkbox" name="checkbox" value="net" checked="checked" />.net</li>
<li><input type="checkbox" name="checkbox" value="org" checked="checked" />.org</li>
<li><input type="checkbox" name="checkbox" value="cc" checked="checked" />.cc</li>
<li><input type="checkbox" name="checkbox" value="info" />.info</li>
<li><input type="checkbox" name="checkbox" value="biz" />.biz</li>
<li><input type="checkbox" name="checkbox" value="name" />.name</li>
<li><input type="checkbox" name="checkbox" value="mobi" />.mobi</li>
<li><input type="checkbox" name="checkbox" value="cn" checked="checked" />.cn</li>
<li><input type="checkbox" name="checkbox" value="com.cn" checked="checked" />.com.cn</li>
<li><input type="checkbox" name="checkbox" value="net.cn" />.net.cn</li>
<li><input type="checkbox" name="checkbox" value="org.cn" />.org.cn</li>
里面的name值全换为checkbox1、checkbox2、checkbox3、、、、、
谢谢您啦....
我搞定了.
顺便我也说一下我的方法,数组我仍是按照原先的checkbox传送,因为一个名字一个名字命名,感觉太杂了.
然后在js里我加了这样的判断,然后再将字符合串传送给check.php处理就行了:
[code=JScript]function check_domain()
{
var elements = document.getElementsByName("checkbox");
var checkbox_str = "";
for(var i=0;i<elements.length;i++){
if(elements[i].checked){
checkbox_str=checkbox_str + elements[i].value+",";
}
} 至于在前台显示的乱码主要是没加了:
header("content-type:text/html; charset=utf-8");对PHP不是很熟悉,走了不少弯路... ^_^再次感谢您的帮助!
你只显示一个的原因是你全部用了checkbox做参数名传递过去了,所以只得到一个checkbox的值。你上面的是通过“,”分割不用checkbox就好了,刚好被我的explode劈中。