ajax问题,谁帮我看看呀!

no9988 2008-12-30 09:35:10
 
jsp中的代码:
script type="text/javascript">

var xmlHttp=false;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
xmlHttp = new XMLHttpRequest();
}
}

function checkUser() {
document.getElementById("spCheckUser").style.color = "green";
document.getElementById("spCheckUser").innerHTML="自动检测用户名...";
createXMLHttpRequest();

xmlHttp.onreadystatechange = callback;
var strUser = document.getElementsByName("username")[0].value;
url="/AjaxTest?strUser="+strUser;
xmlHttp.open("GET", url , true);
xmlHttp.send(null);
}

function callback() {
if (xmlHttp.readyState == 4 ){
if (xmlHttp.status == 0 || xmlHttp.status == 200){
var messageArea = document.getElementById("spCheckUser");
if (xmlHttp.responseText == "false") {
messageArea.innerHTML = "该用户名还没有被占用,您可以注册";
}
else{
messageArea.style.color = "red";
messageArea.innerHTML = "该用户名已经被占用";
}
}
}
}

</script>
</head>
<body>
username:<input type="text" name="username" id="username" size="20" onblur="checkUser();"/><span id="spCheckUser" style="color:red;"></span><br />
password:<input type="password" size="20" />
</body>
</html>

servlet中的代码:
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String str = req.getParameter("strUser");
resp.setContentType("text/xml;charset=utf-8");
resp.setHeader("Cache-Control", "no-cache");
boolean responseText = this.isUserExist(str);
PrintWriter out=resp.getWriter();
out.println(responseText);
out.close();
}

public boolean isUserExist(String username){
if(username.equals("ddd")){
return true;
}
else{
return false;
}
}



问题描述:
我在servlet 能获得jsp传过去的参数,
但是就是返回不了

在执行jsp中下面这句的时候总得不到返回来的值
if (xmlHttp.responseText == "false") {
messageArea.innerHTML = "该用户名还没有被占用,您可以注册";
}
else{
messageArea.style.color = "red";
messageArea.innerHTML = "该用户名已经被占用";
}
...全文
122 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
no9988 2008-12-30
  • 打赏
  • 举报
回复
呵呵
没事了
真的很感谢你哦
我都弄了好长时间!
还好今天能看到结果了
MuBeiBei 2008-12-30
  • 打赏
  • 举报
回复
说真的我之前也想过用ajax返回boolean

但是和你的问题一样

之后就是返回1和0,这样

你要说问我为什么不能判断返回来的boolean,我也不太清楚,功力有限,呵呵!

还好帮你能接收到了
no9988 2008-12-30
  • 打赏
  • 举报
回复
我按你说的 用 ''
if(xmlHttp.responseText == 'true')
效果一样`

提示的 true 执行的 是 else{} 中的代码
MuBeiBei 2008-12-30
  • 打赏
  • 举报
回复
.....js没有equals 方法

要是返回来是string 的话

你试试这样

if(xmlHttp.responseText == 'true')
用单引号
no9988 2008-12-30
  • 打赏
  • 举报
回复
返回的是 string
` 可是我用 equals 来判断 就没反应了`
MuBeiBei 2008-12-30
  • 打赏
  • 举报
回复
你这样试试看看返回的true是什么类型的

alert(typeof(xmlHttp.responseText));
no9988 2008-12-30
  • 打赏
  • 举报
回复


我把 它
改成这样了`
public boolean isUserExist(String username){
if(username.equals("ddd")){
out.println("1");
}
else{
out.println("0");
}
}


if (xmlHttp.responseText == "0") {
messageArea.innerHTML = "该用户名还没有被占用,您可以注册";
}
else{
messageArea.style.color = "red";
messageArea.innerHTML = "该用户名已经被占用";
}
来判断```成功了


可是还是不理解 返回 true 和 false 为什么不行
no9988 2008-12-30
  • 打赏
  • 举报
回复
按你说的 改了
页面用alert 可以获得返回的参数 是 true 和 false

但奇怪的是
if (xmlHttp.responseText == "true") {
messageArea.innerHTML = "该用户名还没有被占用,您可以注册";
}
else{
messageArea.style.color = "red";
messageArea.innerHTML = "该用户名已经被占用";
}

在这里
我明明 用 alert 显示 得到的值 为 true
可是 那还是执行的是 else{}

把 那个 "true" 的引号去掉也一样``
用equals 没反应 ``
no9988 2008-12-30
  • 打赏
  • 举报
回复
我的有在上面那样写呀`
`

boolean responseText = this.isUserExist(str);
PrintWriter out=resp.getWriter();
out.println(responseText);



我按你说的改成

String User_Name= req.getParameter("strUser");
resp.setContentType("text/xml;charset=utf-8");
resp.setHeader("Cache-Control", "no-cache");
PrintWriter out=resp.getWriter();
if(User_Name.equals("ddd")){
out.println("false");
}
else{
out.println("true");
}
out.close();



还是一样
在JSP 页面的效果总是

"该用户名已经被占用“

也就是说 返回得值 有问题``不是 false 我用window.alert(xmlHttp.responseText);
发现得到的 他提示是 没有定义的参数
MuBeiBei 2008-12-30
  • 打赏
  • 举报
回复
xmlHttp.open("GET", url , true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(null);

试试
MuBeiBei 2008-12-30
  • 打赏
  • 举报
回复
我发的不对
看错了
MuBeiBei 2008-12-30
  • 打赏
  • 举报
回复
servlet返回值都是写在out.println()里的

public boolean isUserExist(String username){
if(username.equals("ddd")){
return true;
}
else{
return false;
}
}


改成

public boolean isUserExist(String username){
if(username.equals("ddd")){
out.println("true");
}
else{
out.println("false");
}
}



52,797

社区成员

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

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