ajax页面校验问题
有这个一个ajax页面校验程序:
当有重复用户名时给出提示:"用户名已经被注册,请更换一个用户名!";
没有重复用户名时给出提示"用户名尚未被使用,您可以继续.";
代码如下所示:
------------------------------------------------------------------------------
sample1_1.jsp的内容如下:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script language="javascript">
var http_request = false;
function send_request(url) {//初始化、指定处理函数、发送请求的函数
http_request = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest) { //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//设置MiME类别
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
http_request.onreadystatechange = processRequest;
// 确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open("GET", url, true);
http_request.send(null);
}
// 处理返回信息的函数
function processRequest() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
alert(http_request.responseText);
} else { //页面不正常
alert("您所请求的页面有异常。");
}
}
}
function userCheck() {
var f = document.form1;
var username = f.username.value;
if(username=="") {
window.alert("用户名不能为空。");
f.username.focus();
return false;
}
else {
send_request('sample1_2.jsp?username='+username);
}
}
</script>
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="form1" action="success.jsp" method="post">
用户名:<input type="text" name="username" value="">
<input type="submit" name="submit" value="提交" onClick="userCheck()">
</form>
<!--span style="cursor: pointer; text-decoration: underline" onclick="send_request('2.jsp?username=educhina')">Send a request</span-->
</body>
</html>
--------------------------------------------------------------------------------------
sample1_2.jsp的内容如下:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
<%
String username = request.getParameter("username");
if("educhina".equals(username)) out.print("用户名已经被注册,请更换一个用户名。");
else out.print("用户名尚未被使用,您可以继续。");
%>
--------------------------------------------------------------------------------------
success.jsp的内容如下:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
<html>
<head>
</head>
<body>
<table>
注册成功!
</table>
</body>
<html>
================================================================================
问题:
现在我想把它改成当有重复用户名时给出提示:"用户名已经被注册,请更换一个用户名!",且页面不能提交; 若没有重复用户名时不给出任何提示,即不弹出alert对话框,页面跳转到success.jsp页面,请问大家应该怎样做?
问题点数:10、回复次数:6Top
1 楼tongshushan(雨点轻轻洒过)回复于 2006-03-06 08:58:08 得分 0
请大家指教!Top
2 楼chinahuman(铁匠)回复于 2006-03-06 09:06:49 得分 6
不会JSP,但是可以帮你说一下思路:
你既然只有两种状态,那么JSP里面可以只返回两种状态,1或0比如说返回0是失败的,那么JS就可以这么改了:
function processRequest() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
if(http_request.responseText=="0")
{
alert("用户名已经被注册,请更换一个用户名!");
}
else
{
location.href = "success.jsp";
}
} else { //页面不正常
alert("您所请求的页面有异常。");
}
}
}
function userCheck() {
var f = document.form1;
var username = f.username.value;
if(username=="") {
window.alert("用户名不能为空。");
f.username.focus();
return false;
}
else {
send_request('sample1_2.jsp?username='+username);
return false;
}
}Top
3 楼keanfly(fly)回复于 2006-03-06 09:15:46 得分 4
楼上的朋友,你这一步根本没办法实现:
if(http_request.responseText=="0"),因为http_request.responseText传过来的是包括<html><head></head></html>在内的文本,怎么可能只取到一个0或是1呢?
Top
4 楼wendingming(网络男人)回复于 2006-03-06 09:20:34 得分 0
QQ群:19274762
共享中有一文件reg.rar
就是注册页面检测。Top
5 楼chinahuman(铁匠)回复于 2006-03-06 09:29:22 得分 0
keanfly(fly):你不觉得我是在说一个方法吗?Top
6 楼tongshushan(雨点轻轻洒过)回复于 2006-03-06 09:40:34 得分 0
chinahuman(铁匠) if(http_request.responseText=="0")
{
alert("用户名已经被注册,请更换一个用户名!");
}
是不行的,我已测试过了,
我是这样想的在userCheck()中定义一个变量
var submit=true;
if(http_request.responseText有提示信息时)
{
submit= false
alert("用户名已经被注册,请更换一个用户名!");
}
当submit= false时表示不提交,为true时表示提交,但在执行完
if(http_request.responseText有提示信息时)
{
submit= false
alert("用户名已经被注册,请更换一个用户名!");
}
时submit还是为true,请问大家这是什么原因?
Top




