ajax请求返回的数据一直是undefined

  1. 网上查找了很久,那些方法对自己都不管用。不管怎么设置,查看响应头,发现响应类型一直都是“text/html;charset=utf-8”,死活就是变不了“application/json;charset=utf-8”。
  2. 后来,我舍弃了字符输出流Writer,
    改用字节输出流OutputStream,问题成功解决。服务器端代码如下:


        ObjectMapper mapper=new ObjectMapper();

        //String string = mapper.writeValueAsString(introByName);
       // System.out.println(string);
        response.setContentType("application/json;charset=utf-8");
        mapper.writeValue(response.getOutputStream(),introByName);
        //response.getWriter().write(string);
        //request.getRequestDispatcher("index.jsp").forward(request,response);
  1. 前端代码如下,代码挺少的:
<script>
        $(function ()//入口函数
        {

            $("#intro_a").click(function ()//给a标签设置单击事件
            {

                $.post("${pageContext.request.contextPath}/FindWaterQualityStationServlet",{"name":"安徽宿州杨庄"},function (data)//发起异步请求
                {
                   alert(data.stationName);

                });

            });

        });

    </script>

4.再后来我又发现,其实也是可以使用字符输出流的,出错原因应该是“请求转发”:

 request.getRequestDispatcher("index.jsp").forward(request,response);

去掉请求转发的这一行代码,就行了。所以,请求转发代码就是问题产生的原因。

  1. json解析器我这里用的是jackson。常见的json解析器有Jsonlib、Gson、fastjson、jackson这4种。点我下载jackson所需jar包
  2. 将java对象转换成 json的步骤如下:
    ①:导入jar包
    ②:创建ObjectMapper对象
    ③:调用ObjectMapper相关方法进行转换
    说一下两种方法:
    第一种:writeValue(参数1,obj)
    其中参数1有如下取值:
    File:将obj对象转换为JSON字符串,并保存到指定的文件中; Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中;
    OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中;

第二种: writeValueAsString(obj):将对象转为json字符串。

发布了33 篇原创文章 · 获赞 0 · 访问量 1447

猜你喜欢

转载自blog.csdn.net/Deep_rooted/article/details/103464542