Neoest
Neoest
采纳率50%
2016-05-05 04:55 阅读 7.1k
已采纳

Ajax返回json串附带html页面元素

大家好!现在我碰到一个问题,在后台传到前台的页面中的json莫名多了一些html元素,导致json无法解析,出现错误,我想问问这种情况有同僚遇到过吗?是怎么解决的吗,谢谢分享,有大神也希望帮忙看看!图片说明,这是后台返回的json串,最上面是我需要的json,下面的是html页面元素,

这是ajax
图片说明

大家帮下忙,小弟感激不尽

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

18条回答 默认 最新

  • 已采纳
    Royal_lr Royal_lr 2016-05-05 06:58

    我知道是从后台跑出来,,如果是struts的话,,可以这样

     <result name="success" type="json">
         <param name="root">result</param>
     </result>
    

    result为action中的成员变量,有get和set方法

    点赞 1 评论 复制链接分享
  • sxchen_csdn 凌岩歌-贰拾肆 2016-05-29 08:20

    想A页面Ajax请求,后台处理完,数据还是返回A页面,按两个步骤修改:

    第一步:后台不能做页面跳转, action中处理请求的方法声明为void, 不直接返回数据。

    第二步: 处理请求的方法中,把要返回前端的数据 写入响应对象里,就是HttpServletResponse
    // HttpServletResponse
    response.setHeader("Pragma", "no-cache");
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 0);
    // 响应内容为Json类型
    response.setContentType("application/json; charset=UTF-8");
    response.getWriter().write("用来返回前端的 json字符串");

    第三点: 你的Ajax请求少了一个参数, dataType:"json"

    希望能帮到你!

    点赞 2 评论 复制链接分享
  • Royal_lr Royal_lr 2016-05-05 06:09

    你后台跳转的时候,是会跳到一个页面吗

    点赞 1 评论 复制链接分享
  • azraelluck azraelluck 2016-05-05 06:55

    我好像记得struts返回json要在result里面写上type="json"吧

    点赞 1 评论 复制链接分享
  • jhfsdfs machineShunMing 2016-05-05 05:12

    应该是你后台的问题吧

    点赞 评论 复制链接分享
  • Neoest Neoest 2016-05-05 05:39

    public String toDataTableJson(Page page,
    ObjectToMapCallback callback, String... args) {
    String result = "";
    try {
    ReturnObject ro = toDataTableJsonObject(page.getResult(),
    callback, args);
    ro.setRecordsTotal(Integer.parseInt(page.getTotalCount() + ""));
    ro.setRecordsFiltered(Integer.parseInt(page.getTotalCount() + ""));
    //renderJSON(JSON.toJSONString(ro,SerializerFeature.WriteMapNullValue)); 这句注释掉了,,
    } catch (Exception e) {
    logger.error(e.getMessage());
    result = e.getMessage();
    }
    return result;
    }

    点赞 评论 复制链接分享
  • Neoest Neoest 2016-05-05 05:40

    图片说明 这是注释掉上面哪句 renderJson之后页面的情况,还是能显示html页面元素

    点赞 评论 复制链接分享
  • Royal_lr Royal_lr 2016-05-05 05:49

    f12,,看下请求的详细信息

    点赞 评论 复制链接分享
  • Neoest Neoest 2016-05-05 06:03

    图片说明

    图片说明
    图片说明
    图片说明
    图片说明

    点赞 评论 复制链接分享
  • Neoest Neoest 2016-05-05 06:05

    图片说明

    这个是后台返回的一切正常,但是到页面就多了一些html参数,求大婶,这个问题卡了我三天了

    点赞 评论 复制链接分享
  • Neoest Neoest 2016-05-05 06:28

    图片说明

    这是处理完整之后跳的页面 跟之前是同一个页面

    点赞 评论 复制链接分享
  • jhfsdfs machineShunMing 2016-05-05 07:09

    那你怎么返回数据的呢?

    点赞 评论 复制链接分享
  • Neoest Neoest 2016-05-05 07:55

    图片说明 现在的结果是这样啦

    点赞 评论 复制链接分享
  • Neoest Neoest 2016-05-05 07:56

    图片说明 大神请看,,现在结果是这样的

    点赞 评论 复制链接分享
  • qq_22668529 qq_22668529 2016-07-28 01:54

    ajax的返回值类型要设置成json!

    点赞 评论 复制链接分享
  • Runner__1 T_world 2016-08-15 04:26

    我也遇到过类似问题,造成这个问题的原因是你在用ajax发送请求的时候在访问过action之后会自动回到发送请求的位置,若你在请求到的action里加了页面跳转的逻辑,ajax就会自动将跳转到的那个页面代码当做返回的数据返回回来,因此可以加上sucess函数,在sucess函数中实现页面跳转即可,
    代码示例如下:

      $.ajax({
                    url:'/busasst/map/confirm',              
                    data:{datastring:self.datastring},
                    //dataType:'string',
                    type:'post',
                    async : false, //默认为true 异步
                    success:function(data){
                        //self.data=data;
                        //self.doData();
                        window.location.href="/busasst/user/linestation";
                        console.log("发送成功")
                    },error:function(){
                        console.log("获取错误");
                        return "error";
                    }
    });
    
    点赞 评论 复制链接分享
  • yaoserNO7 yaoserNO7 2016-12-02 07:38

    图片说明

    点赞 评论 复制链接分享
  • yaoserNO7 yaoserNO7 2016-12-02 07:40



    你要返回的 data

    点赞 评论 复制链接分享

相关推荐