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

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

这是ajax
图片说明

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

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

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

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

应该是你后台的问题吧

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;
}

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

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

图片说明

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

图片说明

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

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

图片说明

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

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

那你怎么返回数据的呢?

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

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

想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"

希望能帮到你!

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

我也遇到过类似问题,造成这个问题的原因是你在用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";
                }
});

图片说明



你要返回的 data