将Ajax发送到控制器

时间:2018-10-27 03:53:31

标签: javascript java ajax spring

我正在尝试通过注册表格进行实时验证,该表格告诉用户他们尝试使用的用户名是否已被使用。我正在使用jQuery来检测输入中的更改,并想将它们作为AJAX输入的用户名发送给我设置的Spring控制器。最终,它将把它插入查询中,并返回该用户名是否已注册。我在使用AJAX时遇到麻烦。关于如何准确发送请求的任何想法?

我的AJAX:

$(document).ready(() => {
    function checkPassword() {
        let usernameGiven = $("#username").val();
        $.post( "/check",
            {username: usernameGiven} ,
            function(data) {
            console.log(data)
        })

    }

    $('#username').on('input', () => {
        checkPassword()
    });

});

我的控制器:

 @PostMapping("/check")
public String checkUsername(@RequestParam(name = "username") String username){

}

3 个答案:

答案 0 :(得分:0)

我已经很长时间没有使用jQuery了,但我认为您无法使用该语法在您的帖子中传递数据。试试:

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

dataType是您希望从服务器返回的数据类型(xml,json,脚本,文本,html)。

在测试时,请确保实际上也从控制器返回了一些数据,即使目前只是模拟数据。

答案 1 :(得分:0)

Maybe can work if you use:

<input id="username" onBlur="checkIfUserExist()">

Make a javascript function:

function checkIfUserExist() {

     $.ajax({
          url: "/check",
          data:'username='+$("#username").val(),
          type: "POST",
          success:function(data){
          console.log(data); //content user availability status
     },
     error:function (){}
     });
   }
 }

答案 2 :(得分:0)

认为我找到了想要的东西。这对我有用。让我知道您是否认为有一种更有效的方法。

@RestController
 public class TestController {

     @GetMapping("/getString")
      public String getString(@RequestParam(name = "username") String username) {

          return JSONObject.quote(username);
      }
 }