ajax输出内容时,输出源代码,如何解决?

jack123son 2013-07-26 10:49:48
我想做一个注册页面,检测用户名的时候,虽然检测成功了!但是输出提示的时候却不是我想要的,因为它把源代码给输出了。

下面是源代码
index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户注册</title>
<script language="javascript">
function checkname()
{
var username=document.myform.username.value;
if(username=="")
{
alert("请填写用户名!");
document.myform.username.focus();
return false;
}
else
{
createRequest("checkName.jsp?username="+username);
}
}

</script>
<script language="javascript">
var http_request = false;
function createRequest(url) {
//初始化对象并发出XMLHttpRequest请求
http_request = false;
if (window.XMLHttpRequest) { // Mozilla或其他除IE以外的浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
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) {
alert("不能创建XMLHTTP实例!");
return false;
}
http_request.onreadystatechange = alertContents; //指定响应方法
//发出HTTP请求
http_request.open("GET", url, true);
http_request.send(null);
}
function alertContents() { //处理服务器返回的信息
if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.responseText);
} else {
alert('您请求的页面发现错误');
}
}
}
</script>
</head>

<body>
<center>
<b>注册新用户</b>
<form action="" methond="post" name="myform">
<table border="1">
<tr>
<td>用户名:</td>
<td>
<input type="text" name="username"/><a href="#" onClick="checkname()">[检测用户名]</a>
</td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password"/></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password"/></td>
</tr>
<tr>
<td>生日:</td>
<td><input type="text"/></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" value="男" name="sex"/>男
<input type="radio" value="女" name="sex"/>女
</td>
</tr>
<tr>
<td>邮箱:</td>
<td><input type="text"/></td>
</tr>
</table>
</form>
</center>
</body>
</html>


checkName.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
<%
String username=request.getParameter("username");
String[] u={"admin","zhang","yu"};
for(int i=0;i<u.length;i++)
{
if(u[i].endsWith(username))
{
out.print("很抱歉!用户名["+username+"]已被注册!");
break;
}
else
{
out.print("祝贺您!用户名["+username+"]没有被注册!");
}
}
%>
</body>
</html>

...全文
538 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2013-08-01
  • 打赏
  • 举报
回复
引用 9 楼 jack123son 的回复:
[quote=引用 1 楼 zhenlvezhen2012 的回复:] 你是想弹出是否被注册,还是想在"检测用户名"那显示是否被注册?
在检测用户名名那里显示是否被注册,怎么做啊?[/quote] 兄弟,你看看我在8L的回帖,验证过,是可行的。
效林少爷 2013-08-01
  • 打赏
  • 举报
回复
引用 16 楼 cjavahello 的回复:
把返回的数据格式设置成text
+1
cjavahello 2013-08-01
  • 打赏
  • 举报
回复
把返回的数据格式设置成text
ncist_jianeng 2013-08-01
  • 打赏
  • 举报
回复
弹出框是没有样式的,他不会解释html标签的。你要么用innerHtml在指定标签中显示。。要么你模拟alert自己写个遮罩层来弹框
猪公公 2013-08-01
  • 打赏
  • 举报
回复
把后台代码贴出来看
king007 2013-08-01
  • 打赏
  • 举报
回复
String username = request.getParameter("username");的前面加上这句response.setContentType("text/html;charset=gb2312");
  • 打赏
  • 举报
回复
只需要返回你想要的东西就行了,不需要一个完整的界面
新虹 2013-07-28
  • 打赏
  • 举报
回复
返回处理中alert有问题
后style 2013-07-27
  • 打赏
  • 举报
回复
alert(http_request.responseText); 返回的是页面的文本信息,
ghostkngiht 2013-07-26
  • 打赏
  • 举报
回复
另外index.jsp里methond拼写错了
ghostkngiht 2013-07-26
  • 打赏
  • 举报
回复
checkName.jsp改为如下

<%@page import="java.io.PrintWriter"%>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
    </head>

    <body>
        <%
            String username = request.getParameter("username");
            String[] u = {"admin", "zhang", "yu"};
            PrintWriter out1 = response.getWriter();
            for (int i = 0; i < u.length; i++) {
                if (u[i].endsWith(username)) {
                    out1.println("很抱歉!用户名[" + username + "]已被注册!");
                    break;
                } else {
                    out1.print("祝贺您!用户名[" + username + "]没有被注册!");
                }
            }
            out1.close();
        %>
    </body>
</html>
或者

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
    String username = request.getParameter("username");
    String[] u = {"admin", "zhang", "yu"};
    for (int i = 0; i < u.length; i++) {
        if (u[i].endsWith(username)) {
            out.print("很抱歉!用户名[" + username + "]已被注册!");
            break;
        } else {
            out.print("祝贺您!用户名[" + username + "]没有被注册!");
        }
    }
%>
另外这个功能最好弄个servlet来写。
zhenlvezhen2012 2013-07-26
  • 打赏
  • 举报
回复
你是想弹出是否被注册,还是想在"检测用户名"那显示是否被注册?
jack123son 2013-07-26
  • 打赏
  • 举报
回复
引用 1 楼 zhenlvezhen2012 的回复:
你是想弹出是否被注册,还是想在"检测用户名"那显示是否被注册?
在检测用户名名那里显示是否被注册,怎么做啊?
oh_Maxy 2013-07-26
  • 打赏
  • 举报
回复
多啥删啥,最后checkName.jsp内容:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
    response.setContentType("text/html");
    String username = request.getParameter("username");
    String[] u = {"admin", "zhang", "yu"};
    boolean inUse = false;
    for (int i = 0; i < u.length; i++)
    {
        if (u[i].equals(username))
        {
            out.println("很抱歉!用户名[" + username + "]已被注册!");
            inUse = true;
            break;
        }
    }
    if (!inUse)
    {
        out.println("祝贺您!用户名[" + username + "]没有被注册!");
    }
    out.flush();
%>
残梦了无痕 2013-07-26
  • 打赏
  • 举报
回复
response的页面响应头写错了,还有你应该用response.getWriter()这个流向前台写入数据
xiaofanac66 2013-07-26
  • 打赏
  • 举报
回复
我感觉应该是你用的对象用错了,不应该用OUT对象。 <% response.getWriter().write(""); %> 你试试
ZHOU西口 2013-07-26
  • 打赏
  • 举报
回复
改一下响应的类型
S117 2013-07-26
  • 打赏
  • 举报
回复
response.setContentType("application/json")

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧