在jsp中进行id检查的Ajax只返回相同的结果

时间:2017-01-19 11:30:23

标签: javascript ajax spring jsp spring-mvc

我一直在使用jsp中的ajax检查id。因此,当用户尝试创建一个新帐户时,他们将输入他们想要的ID,而ajax将检查数据库中是否存在相同的ID。如果有,则返回' n'在jsp中,它变成了“不可用”。'如果没有相同的ID,则返回' y'在jsp中,它变成了可用的。'问题是它似乎只会返回' n' n。

这是javascript。

 $('#email').keyup(function(){
    var str = $(this).val();
    var server = "idcheck";     
    $.post(server, {"email":str}, function(data){
        if(data.ret =='y'){
            $('#valid_check').html("available");
        }else if(data.ret =='n'){
            $('#valid_check').html("unavailable");
        }

        });
    });

这是join.jsp。

<label id="valid_check">check if you can use id</label>
<input id="email" name="email" type="email" class="form-style-join" placeholder="ex> mymail477@gmail.com" />    

这是控制器。

@RequestMapping(value = "/idcheck", method = { RequestMethod.GET, RequestMethod.POST })
public @ResponseBody HashMap<String,String> idCheck(HttpServletRequest request,
        HttpServletResponse response){
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");

    String mem_id = request.getParameter("mem_id"); 
    int ret= memberMapper.memberIDCheck(mem_id);

    HashMap<String,String> map = new HashMap<String,String>();


    if(ret == 1){
        map.put("ret", "y");

    }else if( ret != 1){
        map.put("ret", "n");
    }

    System.out.println(map);
    return map;
}

这是Mapper。

@Select("SELECT count(*) AS cnt FROM `member` WHERE mem_id=#{mem_id}")
public int memberIDCheck(String mem_id); 

1 个答案:

答案 0 :(得分:1)

首先,您需要确保在弹簧控制器方法中获得输入字段值。所以在这里你发送一个参数{“email”:str},但在控制器中你正在寻找“mem_id”。

试试这段代码:

@RequestMapping(value = "/idcheck", method =  RequestMethod.POST })
public @ResponseBody HashMap<String,String> idCheck(HttpServletRequest request, HttpServletResponse response, @RequestBody String email){
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");

String mem_id = email; 
int ret= memberMapper.memberIDCheck(mem_id);

HashMap<String,String> map = new HashMap<String,String>();


if(ret == 1){
    map.put("ret", "y");

}else if( ret != 1){
    map.put("ret", "n");
}

System.out.println(map);
return map;

}

我在这里添加了一个@RequestBody。这样,在ajax请求中绑定的数据“email”就可以映射到方法参数email。