日期:2014-05-19  浏览次数:20606 次

高分求助:一天没解决了,好人抽个空帮个忙,散分了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,记得结贴。

Java code

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一样的字符串的
------解决方案--------------------
你那个返回的东西不对的,中间肯定有问题!是不是还有其他的处理!
------解决方案--------------------