2017-01-19 46 views
0

私はjspでajaxを使ってidをチェックするように働いています。したがって、ユーザーが新しいアカウントを作成しようとすると、作成したいIDをタイプし、データベースに同じIDがあるかどうかをajaxがチェックします。存在する場合は 'n'を返し、jspでは 'unavailable'に変更します。同じidがなければ 'y'を返し、jspでは 'available'に変更します。問題は「n」だけを返すようなものだということです。idチェックインのjspのAjaxは同じ結果を返します

ここは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> [email protected]" />  

ここはコントローラです。

@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

まずあなたがあなたの春のコントローラメソッドで入力フィールドの値を取得することを確認する必要があります。ここでパラメータ{"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にマップすることができます。

+0

ありがとうございます! – camila

関連する問題