簡體   English   中英

如何從 controller 到 Ajax 調用返回列表並成功打印?

[英]How to return a List from controller to Ajax call and print it in the success?

這是我從 rest controller 打印出我的列表值時得到的 object 的模式。

[
   {
    "name": "Jon",
    "isUser": true
   },
   {
    "name": "Ween",
    "isUser": false
   }

]

但問題是我不知道如何將這個值傳遞給我的 ajax 調用。 我需要這些價值觀來做進一步的工作。 但是每當我調用這個 controller 我的ajax時返回error 500 這是我的 rest controller:

    @RequestMapping(value = "/getusers",  method = RequestMethod.GET)
    public List userShow(HttpServletRequest request, Model model) {

        List userlist = new ArrayList();
        try{
            userlist = JSONArray.fromObject(userService.getUserList());
            System.out.println(userlist);
        }catch (Exception e){
            logger.error(e);
        }
        return  userlist;
    }

我可以從system.out清楚地看到打印的userList的列表,但我不確定為什么這些值不在ajax call中。 也許我必須更改我的 function 的return值,我已經給出了list ,因為我希望我的數據作為我在問題第一部分中給出的數據。 和我的 ajax 通話:

    $.ajax({
          type: "GET",
          url: "/getusers",
          success: function (response) {
           console.log(response);
           if(response === true) {
                  user = true;
             }
             else{
                 user = false;
              errorShow = "error getting values";
          }
      },
      async: false
  });

當這個 url 命中時,在controller中可以看到值,但在console.log中我看到了

獲取http://localhost:3000/getusers 500

錯誤。 如何在響應部分獲取這些值?

我認為您在 class 級別使用 @Controller 注釋。 如果您使用@RestController,則不必顯式編寫@Responsebody。

此外,您可以使用新的方法注釋來代替 @RequestMapping(value = "/getusers", method = RequestMethod.GET) 。 @GetMapping("/getusers")

如果你真的想返回列表,你可以像這樣使用 ResponseEntity:

@RequestMapping(value = "/getusers", method = RequestMethod.GET)
public ResponseEntity <List> userShow(HttpServletRequest request, Model model) {

    List userlist = new ArrayList();
    try {
        userlist = userService.getUserList();
        System.out.println(a);
    } catch (Exception e) {
        logger.error(e);
    }

    URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/").buildAndExpand("").toUri();
    return ResponseEntity.created(uri).body(userlist);
}

請注意,我刪除了JSONArray.fromObject()因為ResposneEntity將為您將 List 轉換為 JSON。 此外,最好指定 List 類型,例如: List<User>

只需在方法級別使用@Responsebody注釋,您就不必再將列表轉換為數組。 直接返回列表。

改變

JSONArray.fromObject(userService.getUserList())

userService.getUserList()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM