高分求助:一天没解决了,好人抽个空帮个忙,散分了ajax+json存List 不到Success函数
问题如下:
在service获取List<Project> 在action里转成json对象 再到js里来显示这个list
问题出现了,json对象死活不到success方法 只到error方法 ,后来查了一晚上 都说是json格式不正确,我也确定是json格式的问题,用正确的json格式传进去,还是没法到success,我快疯了,好人们过来帮个忙啊。用的struts1.
action层如下:
List<Project> list=applicationService.getProjectName();
JSONArray array = JSONArray.fromObject(list);
System.out.println(array.toString());
request.setAttribute("data", array);
//response.getWriter().write("{\"result\":\"true\", \"msg\":\"删除成功\"}");
response.getWriter().write(array.toString());
return null;
这里array有值 打印出来结果为[{"id":1283,"name":"Internal CR Print Smart Grade"},{"id":1284,"name":"TAL PLM Import & Export"}]
js代码如下:
function getProjName() {
alert("sss");
$.ajax( {
type : "POST",
url : "http://localhost:8080/FBTrack_PMO/transfer/getProj.fb",
dataType : "JSON",
cache : "false",
success : function(data) {
alert(data);
},
error: function(res, text) {
alert("错误信息:" + text);
}
});
}
这里如果我把dataType改成text,就可以获取到以一个html格式的数据,也能到success 的方法
如果是json 则到error 显示parsererror
大侠们救命啊,这个解决不了我几天吃不下去饭了。。。。
[解决办法]
我这边也遇到过这种情况 是jquery版本的问题 一开始用的是 jquery-1.4.1.min.js 后来用的jquery-1.6.2.min.js 可以的 你试试看
[解决办法]
换个版本的jquery试试
[解决办法]
response.setContentType("application/json;charset=UTF-8");
[解决办法]
dataType : "JSON",
中JSON改为小写呢
[解决办法]
我记得jquery的dataType应该都是小写字母的
[解决办法]
本来想偷懒的,写个完整的,如果OK,记得结贴。
List<Project> list=applicationService.getProjectName();Iterator<Project> iterator = list.iterator();StringBuffer jsonStr = new StringBuffer();while (iterator.hasNext()) { Project project = iterator.next(); jsonStr.append("{\"id\":\"").append(project.getId()) .append("\",\"name\":\"").append(project.getName()) .append("\"}"); if (iterator.hasNext()) jsonStr.append(",");}response.setContentType("application/json;charset=UTF-8");response.getWriter().write("[" + jsonstr + "]");return null;
[解决办法]
以前我遇到过这样的问题,看是不是因为action返回的信息有错
[解决办法]
直接返回[{"id":1283,"name":"Internal CR Print Smart Grade"},{"id":1284,"name":"TAL PLM Import & Export"}]找个字符串能欧诺个json拿到不,
我这边直接写找个字符串当json接收没问题
[解决办法]
你把dataType改成text得到的结果是啥,发出来看看,怎么会是个html呢
[解决办法]
那找个问题应该是你处理逻辑里报了错了吧!
你配置错误跳转页面了吧,返回的应该是你的错误跳转页面吧,不然text返回的应该是和json一样的字符串的
[解决办法]
你那个返回的东西不对的,中间肯定有问题!是不是还有其他的处理!
------解决方案--------------------
第一步 :在后台打印转换后的json的数据,看看数据的格式是否正确
第二部 :查看前台是否引入了正确的js文件
第三步 :编写的js是否正确
据分析楼主第一步应该没有问题。
[解决办法]
List<User> list = this.getUserService().getUserDao().getList( "from User"); Map hashMap = new HashMap(); hashMap.put("success", true); hashMap.put("totalProperty", list.size()); List root = list; JSONArray ja = JSONArray.fromObject(root); hashMap.put("root", ja); JSONObject jo = JSONObject.fromObject(hashMap); try { System.out.println(jo); response.getWriter().print(jo); } catch (IOException e) { e.printStackTrace(); }
[解决办法]
!
首先
ajax别用post提交
用get
其次你考虑给ajax加同步锁
async:false,
[解决办法]
Map result = new HashMap();
result.put("success", true);
result.put("list", list);
JSONObject json = JSONObject.fromObject(result);
response.getWriter().write(json);
拿去试试 有问题加我Q 632167558
[解决办法]
看了 你用text返回的时候返回的不是有td标签的东西吗?说明你中间是不是用了拦截器等东西吧你返回的东西修改了,你在页面拿到的东西已经不是json的东西了,他按json去拿的话肯定就不对了的
[解决办法]
用firebug调试时,可以打开控制台,找到你的页面的代码,然后一步一步的跟踪,看传到后台的参数和返回到前台的参数是不是你想要的,