【问题标题】:How to return a List from controller to Ajax call and print it in the success?如何将列表从控制器返回到 Ajax 调用并成功打印?
【发布时间】:2020-06-05 16:27:57
【问题描述】:

这是我从休息控制器打印出我的列表值时得到的对象的模式。

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

]

但问题是我不知道如何将这个值传递给我的 ajax 调用。我需要这些价值观来进行进一步的工作。但是每当我调用这个控制器时,我的ajax 都会返回error 500。 这是我的休息控制器:

    @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 中。也许我必须更改我的函数的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/getusers500

错误。如何在响应部分获取这些值?

【问题讨论】:

    标签: javascript java ajax spring spring-boot


    【解决方案1】:

    我认为您在类级别使用@Controller 注释。 如果您使用@RestController,则不必显式编写@Responsebody。

    也代替 @RequestMapping(value = "/getusers", method = RequestMethod.GET) 您可以像这样使用新的方法注释。 @GetMapping("/getusers")

    【讨论】:

      【解决方案2】:

      只需在方法级别使用@Responsebody 注释,您就不必再将列表转换为数组。直接返回列表。

      改变

      JSONArray.fromObject(userService.getUserList())
      

      userService.getUserList()
      

      【讨论】:

        【解决方案3】:

        如果你真的想返回列表,你可以像这样使用 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 将为您将列表转换为JSON。 另外最好指定 List 类型,例如:List&lt;User&gt;

        【讨论】:

          猜你喜欢
          • 2016-09-09
          • 1970-01-01
          • 1970-01-01
          • 2014-12-23
          • 1970-01-01
          • 2020-08-13
          • 1970-01-01
          • 1970-01-01
          • 2018-12-13
          相关资源
          最近更新 更多