qq_28930619
qq_28930619
采纳率25%
2018-03-20 15:02

ssm 框架已经实现,但是ajax返回验证有毛病

10

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>js+ajax</title>
<script type="text/javascript" src="static/bootstrap/js/jquery-2.0.3.js"></script>
<script type="text/javascript">
    function validate(){
        var name= $("#name").val();
        if(name==null||name==""){


            //为空隐藏提交按钮
            var ui =document.getElementById("tijiao");
            ui.style.display="none";


            //这里是简单的显示 不设计后台,前台做的判断
            $("#namediv").html("用户名不可以为空");
        }else{
            //ajax实现
            //11111111获取XMLhtmlRequestxml对象
            var req=createXmlHttpRequest();
            //222222222准备url 数据 回调函数
            //这个name是function下面var的参数. 
            var url="/maven/reg1.do?name="+name;
            //还有一个参数表示的是异步还是同步,一般不写直接就是true,异步的
            req.open("GET",url,true);
            //3333333333这个就是回调函数
            req.onreadystatechange=callback;

            //这个send是在从servlet判断你的账号是不是存在,  如果是true就说名字存在,给页面返回了以后才有的.为啥写空不知道
            //4发送请求
            req.send(null);
            //回调函数 
            function callback(){
                //第一个是我们的服务器成功接受了响应,并且解释了出来,状态4 第二个是服务器内部没有发生错误, url什么的也没有错,
                if(req.readyState=4&&req.status==200){
                     var date=req.responseText;
                     if(date=="false"){
                        //下面的是意思是,如果账号存在了,提交按钮自动消失
                        //超级叼
                         var ui =document.getElementById("tijiao");
                         ui.style.display="none";

                        $("#namediv").html("用户名已经存在");
                     }else{
                        //不为空了,按钮一直显示
                        var ui =document.getElementById("tijiao");
                        ui.style.display="";


                         $("#namediv").html("用户名可以使用");


                     }
                }
            }
        }
    }

        function createXmlHttpRequest(){
            //如果是ie6以上版本的浏览器
            if(window.XMLHttpRequest){
                return new XMLHttpRequest();
            }else{
                //如果浏览器是ie以下的
                return new ActiveXObject("Microsoft.XMLHTTP");
            }
        }


</script>
</head>

<body>
                <form action="/maven/reg1.do" id="form1">
                <table id="aa">
                    <tr>
                        <td>用户名</td>
                        <td><input type="text" name="username" id="name"
                        onblur="validate();" />&nbsp;<font color="red">*</font></td>

                        <td>
                            <div id="namediv" style="display: inline"></div>
                        </td>


                        <td>密码</td>

                        <td><input type="password" name="password"></td>
                        <td>电话</td>
                        <td><input type="text" name="phone"></td>
                        <td><input type="submit" value="点击注册" id="tijiao"></td>

                    </tr>   
                </table>        
                </form>
</body>
</html>



package com.gray.user.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.gray.user.entity.RegUser;
import com.gray.user.service.impl.RegServiceImpl;
import com.gray.user.service.impl.UserServiceImpl;

@Controller
public class RegController {

    @Autowired
    private RegServiceImpl userService;
    //自动装载他到spring

    @RequestMapping("/reg1.do") //url
    public String dologin(Model model,HttpServletResponse res,@RequestParam String username,RegUser rg,HttpServletResponse response) throws IOException{
        boolean used=false;

        System.out.println("测试参数获取到bean没有"+rg.getUsername()+rg.getPassword()+rg.getPhone());
        rg.setUsername(username);

        if(userService.doUserLogin(rg)){
                used=true;
                System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是ture,就是说账号不重复");


        }else{
                used=false;
                System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是false,重复了账号 ");
        }
        return "regsuccess";


    }
}






package com.gray.user.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.gray.user.dao.UserDao;
import com.gray.user.entity.RegUser;
import com.gray.user.entity.User;
import com.gray.user.service.RegService;
import com.gray.user.service.UserService;
@Service
public class RegServiceImpl implements RegService {
    @Autowired
    private UserDao<RegUser> dao;

    @Override
    public boolean doUserLogin(RegUser ruser) {



        //第一次执行查询数据库,查询 userdao  selectUserName方法。 他这个方法和user.xml里面的id为selectUserName串联了.
        //也就是直接调用查询语句,并且吧值返回给reguser 类



        System.out.println("testRegServiceImpl------->查询数据库,查询语句为id是selectusername");

        List<RegUser> list = dao.selectUserName(ruser.getUsername());
        System.out.println("查到了集合大小是"+list.size()+"查到了和你账号相同是的是几个");

        if(list.size() == 0){
            System.out.println("RegServiceImpl---你没有查询到你账号和数据库相同的信息.所以你return,");
            for(int i=0;i<list.size();i++){
                System.out.println(list.get(i).getUsername());
            }
            return true; 
        }else{ 
            if(list.size()!=0){
            System.out.println("regServiceImpl---查询到和你相同的账号不是0个,返回false");    
                return false;
        }else{
            System.out.println("regserviceImpl----其他情况我也不知道啥情况,也返回false");
            return false;

            }           
        }

    }
}




页面上的ajax 他就一直出毛病,数据库有个账号名是aa 只有我在表单填写aa 他才在网页提示账号重复,    别的任何都不提示,只会提示不能为空,    而且还失灵时不灵。
但是用system. 输出 我写的任何判断都是对了, 这是为啥? 请求大神给我说下,最好说下哪里错了。谢谢了
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • xzp18247655294 xzp18247655294 3年前

    而且 你的Controller返回的是字符串 字符串是“regsuccess” 你在前台ajax判断的是==“false”可能这里有问题
    你将返回的字符串改成“1” 在前台判断也是 ==“1”应该就可以了

    点赞 评论 复制链接分享
  • xzp18247655294 xzp18247655294 3年前

    在判断输入值的时候 应该写 if(name==null&&name==""){}

    点赞 评论 复制链接分享
  • welan123123 奔跑的小鱼儿 3年前

    把获取的值输出看看啊,看你到底获取到没

    点赞 评论 复制链接分享
  • welan123123 奔跑的小鱼儿 3年前
    点赞 评论 复制链接分享

为你推荐