| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3688 人关注过本帖
标题:[原创]JS不刷新页面与ASP通信实现用户名检测
只看楼主 加入收藏
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
 问题点数:0 回复次数:23 
[原创]JS不刷新页面与ASP通信实现用户名检测


演示地址:
http://www.4yt.net/yc/jscallasp/testpage.htm


代码:
TestPage.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml-xml; charset=UTF-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="made" rev="made" href="mailto:griefforyou(at)gmail.com" />
<title>JS不刷新页面与ASP通信的测试</title>
<style type="text/css">
ol {margin-left:0px;}
ol li {margin-top:20px;}
</style>
<script type="text/javascript">
<!--
//Powerd by griefforyou

var Username;

function checkbydynamicscript(){
Username=document.getElementById("Username").value;
if(Username=="") {alert('请先输入用户名!');return}

//通过DOM动态创建一个Script元素,由ASP生成客户端脚本并执行
var script=document.createElement("script");
script.type="text/javascript";
script.src="CheckUser.asp?ReturnType=javascript&CallBack=CallBack&Username=" + Username;
document.getElementsByTagName("head")[0].appendChild(script);
}

//服务器返回JavaScript的回调函数
function CallBack(){
var rtnXML=CallBack.arguments[0];
showResult(rtnXML);
}

function checkbyiframe(){
Username=document.getElementById("Username").value;
if(Username=="") {alert('请先输入用户名!');return}
//尚未完成
}

function checkbyajax(){
Username=document.getElementById("Username").value;
if(Username=="") {alert('请先输入用户名!');return}

//AjAX其实就是 JavaScript+XMLHTTP
//创建XMLHTTP对象
var xmlhttp;
//for ie
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlhttp = null;
}
}
}
//for firefox
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}

if(xmlhttp==null) {alert('你的浏览器不支持XMLHTTP对象,无法采用AJAX技术!');return;}

xmlhttp.open("GET","CheckUser.asp?ReturnType=text&Username=" + Username,false);
xmlhttp.send(null);
var rtnText = xmlhttp.responseText;
showResult(rtnText);
xmlhttp=null;
}


function showResult(rtnText){
if(rtnText=='Exist') {alert('服务器返回信息:\n' + rtnText + '\n\n该用户名已经存在!');document.getElementById("Username").value='';}
else alert('服务器返回信息:\n' + rtnText + '\n\n该用户名可以正常使用!');
}
-->
</script>
</head>
<body>
<h3>JS不刷新页面与ASP通信的测试(griefforyou用户已经存在)</h3>
<form method="post" action="TestPage.htm">
<div>
<label>用户名:</label>
<input type="text" name="Username" id="Username" value="griefforyou" />
<label class="explain">用户名只能包含字母、数字及下划线。</label>
</div>
<div>
<label>口 令:</label>
<input type="text" name="Password" />
<label class="explain">建议您的口令包含字亩、数字及特殊符号。</label>
</div>
</form>
<ol>
<li>
<label>传统的iframe方法</label>
<input type="button" value="尚未完成" onclick="checkbyiframe()" disabled="disabled" />
</li>
<li>
<label>使用DOM动态插件Script元素的方法</label>
<input type="button" value="检测用户名" onclick="checkbydynamicscript()" />
</li>
<li>
<label>目前非常通行的AJAX技术</label>
<input type="button" value="检测用户名" onclick="checkbyajax()" />
</li>
</ol>
</body>
</html>



CheckUser.asp

<%@ language="VBScript" codepage="65001"%>
<%
'Powerd by griefforyou

'检测用户名是否存在,并返回数据给客户端程序,返回的式可以用XML格或,纯文本格式,JS代码等等,看自己情况
Dim ReturnType,Username,CallBack

ReturnType=LCase(Request.QueryString("ReturnType"))
Username=Request.QueryString("Username")
CallBack=Request.QueryString("CallBack")

If ReturnType="text" Then
Response.AddHeader "Content-Type","text/plain"
ElseIf ReturnType="javascript" Then
Response.AddHeader "Content-Type","text/javascript"
Else
ReturnType="html"
Response.AddHeader "Content-Type","text/html"
End If
Response.Charset="UTF-8"

'这里我就不连接数据库了,假定 griefforyou 这个用户已经被注册
If ReturnType="text" Then
Dim OutPutText
If LCase(Username)="griefforyou" Then
OutPutText="Exist"
Else
OutPutText="Not Exist"
End If
Response.Write OutPutText
ElseIf ReturnType="javascript" Or ReturnType="html" Then
Dim OutPutJS
If LCase(Username)="griefforyou" Then
OutPutJS="Exist"
Else
OutPutJS="Not Exist"
End If
If ReturnType="javascript" And CallBack<>"" Then
Response.Write XMLToJS(OutPutJS) & vbCrlf & CallBack & "(resultXML)"
Else
Response.Write XMLToJS(OutPutJS)
End If
End If



Function XMLToJS(XMLSource)
Dim tempArr, i, XMLResult
XMLResult = Replace(Replace(Replace(XMLSource, "\", "\\"), """", "\"""), "'", "\'")

tempArr = Split(XMLResult, vbCrLf)
XMLResult = ""
For i = 0 To UBound(tempArr)
If i = 0 Then
XMLResult = XMLResult & "resultXML="
End If

XMLResult = XMLResult & """" & tempArr(i)

If i <> UBound(tempArr) Then
XMLResult = XMLResult & "\n""+" & vbCrLf
Else
XMLResult = XMLResult & """" & vbCrLf
End If
Next

XMLToJS = XMLResult
End Function
%>
搜索更多相关主题的帖子: 通信 ASP 用户名 页面 检测 
2005-12-23 18:47
conn
Rank: 2
等 级:新手上路
威 望:5
帖 子:420
专家分:0
注 册:2005-11-27
收藏
得分:0 

好东东,收藏了慢慢看


我是新手,但我很虚心,对我发的问题请不要取笑,谢谢
2005-12-23 19:26
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
收藏
得分:0 
好东西,一直在找,呵呵,多谢了!!

专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2005-12-23 19:37
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
好像没多少人感兴趣

天津网站建设 http://www./
2005-12-26 08:43
caiyakang
Rank: 2
等 级:新手上路
威 望:5
帖 子:2111
专家分:0
注 册:2005-3-24
收藏
得分:0 
很好,支持一下
不过就是看不懂

中国人的财富网:http://www..cn/
2005-12-26 09:01
dpxdpx
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2005-11-22
收藏
得分:0 
收藏

从不懂到懂点点到有点懂到懂点了到想搞懂更多到问题更多了到不懂的更多了到编程论坛请教大家来了!
2005-12-26 09:34
dreame
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:521
专家分:0
注 册:2005-10-23
收藏
得分:0 
AjAX技术不错,还是看不大懂的说!

有时候真的想放弃寂寞的等待,但她是那么的可爱!I love u forever!
2005-12-26 19:00
conn
Rank: 2
等 级:新手上路
威 望:5
帖 子:420
专家分:0
注 册:2005-11-27
收藏
得分:0 
老大,传点经呗,怎么学的XML,他的样式太灵活了,不知道怎么去学好。。。一直没敢去接触。

我是新手,但我很虚心,对我发的问题请不要取笑,谢谢
2005-12-26 19:09
conn
Rank: 2
等 级:新手上路
威 望:5
帖 子:420
专家分:0
注 册:2005-11-27
收藏
得分:0 
这么好的东西,强烈建议加精~~

我是新手,但我很虚心,对我发的问题请不要取笑,谢谢
2005-12-26 19:52
盖茨他爹
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:5255
专家分:0
注 册:2005-5-3
收藏
得分:0 
我现在也看不懂撒,以后再学,好帖子一定要加精
2005-12-26 19:56
快速回复:[原创]JS不刷新页面与ASP通信实现用户名检测
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046288 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved