Spring + Ajax Post数据文本

时间:2018-06-25 04:26:17

标签: jquery ajax spring-mvc thymeleaf

我正在使用Ajax发布来调用控制器,但是我没有得到响应并得到错误。

我看到控制器在ajax正确获取的用户名上也为空

Ajax击中控制器,并且在系统输出中,输入值(用户名)显示为null,因此未获得预期值

我的Spring Controller

@Controller
public class SearchController {

UserService userService;
@Autowired
public void setUserService(UserService userService) {
    this.userService = userService;
}

@PostMapping("/api/search")
public String getSearchResultViaAjax(String username) {
    System.out.println(username);
    String result=userService.findByNativeByName(username);
    return result;

}
}

提交帖子的我的Ajax

function fire_ajax_submit() {
   var name = $("#username").val();
    $("#btn-search").prop("disabled", true);

$.ajax({
    type: "POST",
    contentType: "text/plain",
    url: "/api/search",
    data: name,
    dataType: 'text',
    cache: false,
    timeout: 600000,
    success: function (data) {
        var json = "<h4>Ajax Response</h4><pre>"
            data + "</pre>";
        $('#feedback').html(json);
        console.log("SUCCESS : ", data);
        $("#btn-search").prop("disabled", false);
    }
    error: function (e) {

        var json = "<h4>Ajax Response</h4><pre>"
            + e.responseText + "</pre>";
        $('#feedback').html(json);
        console.log("ERROR : ", e);
        $("#btn-search").prop("disabled", false);
    }
});

}

我的html

<form class="form-horizontal" id="search-form">
        <div class="form-group form-group-lg">
            <label class="col-sm-2 control-label">Username</label>
            <div class="col-sm-10">
   <fieldset>
      <p>
         <select id = "username" class="form-control">
           <option value = "Kilu">Kilu</option>
           <option value = "Maha">Maha</option>
         </select>
      </p>
   </fieldset>
            </div>
        </div>
    </form>

任何帮助将不胜感激

5 个答案:

答案 0 :(得分:0)

尝试像下面这样传递数据:

 data: { "username": name },

答案 1 :(得分:0)

Sandeep Rathore 的答案几乎是正确的,除了参数名称必须为username

因此,在ajax代码中,将data更改为以下内容:

data: { "username": name }

或使用@RequestParam()重设控制器方法中的参数:

public String getSearchResultViaAjax(@RequestParam("name")String username)

更新的答案

响应是JSON格式的数据,您可以使用下面的代码来获取它

success: function (data) {

   data = eval("(" + data + ")");
   console.log(data.username);

}

答案 2 :(得分:0)

您需要在成功阻止之后放置一个“ ”(逗号),否则您将继续遇到相同的错误您在控制台上的页面:-

success: function (data) {

       //your code

    },  // right here to indicate the end of this block here as you're putting your error block after this.

答案 3 :(得分:0)

尝试更改contentType,

contentType: 'application/json; charset=utf-8;'

还要在成功块后加上','(逗号)。

答案 4 :(得分:0)

1)您的Spring Controller应该是@RestController或@Controller,其方法标注为@ResponseBody。

2)发布像这样的数据==>数据:{“ username”:name},

3)接收到数据后,使用stringify()进行显示,并使用JSON.parse()提取值。

4)检查您的内容类型标头参数(contentType:'application / json; charset = utf-8;')