Ajax 如何 得到后台返回 的json数据,正确的格式应该如何去写?

Controller 中的代码

    @RequestMapping("/list")
    @ResponseBody
    public List<WorkLog> AllLog(){
        List<WorkLog> sh = workLogService.AllLog(); 
        System.out.println("*******************************");
        System.out.println(sh);
        return sh;
    }

JS部分

<script>
        var data;
        $("#serach1").click(function(){
            $.ajax({  
                type: "POST",  
                url: "list",  
                dataType:"json",  
                success: function(worklog){  
                    data =JSON.stringify(worklog.sh);
                    alert(data);
                }
             });   
        });
</script>

直接访问/list

clipboard.png
点击访问:

clipboard.png

控制台(这个不怎么会看)
clipboard.png

clipboard.png

我现在感觉就是ajax中的内容写错了。但是找不到问题所在。

阅读 4.7k
5 个回答

你后台返回的是个sh 所以ajax的回调函数里的参数就是你后台返回的数据 ,不需要点它

success: function(data) {
  console.log(data);
}

为啥 worklog.sh? 后端返回没见有sh这个字段。如果想看后端到底返回了什么, 可以 console.log(worklog)

对于后台传回来的数据,你可以先把list转换成json数组,
StringBuilder stringbuilder = .... 获取list中的内容,转成字符串
JSONArray jsonarray = JSONArray.fromObejct(stringbuilder); // 转成json数组

前台:
var json = eval(json); // 把获取的数据转成json数组
对json遍历,获取其中的每一个对象

JS部分的ajax,响应worklog没有sh属性,所以worklog.sh变成了undefined
尝试:

data =JSON.stringify(worklog);

还不行,就敲个断点,debug看看worklog是什么

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题