首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

高分一天没解决了,好人抽个空帮个忙,散分了ajax+json存List 不到Success函数

2012-04-12 
高分求助:一天没解决了,好人抽个空帮个忙,散分了ajax+json存List 不到Success函数问题如下:在service获取L

高分求助:一天没解决了,好人抽个空帮个忙,散分了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一样的字符串的
[解决办法]
你那个返回的东西不对的,中间肯定有问题!是不是还有其他的处理!
------解决方案--------------------


第一步 :在后台打印转换后的json的数据,看看数据的格式是否正确
第二部 :查看前台是否引入了正确的js文件
第三步 :编写的js是否正确

据分析楼主第一步应该没有问题。
[解决办法]

探讨

本来想偷懒的,写个完整的,如果OK,记得结贴。

Java code

List<Project> list=applicationService.getProjectName();
Iterator<Project> iterator = list.iterator();
StringBuffer jsonStr = new StringBuffer();
while (iterator……

[解决办法]
error: function(res, text,aa) {
alert("错误信息:" + text +aa);
}
看看aa打印出来是什么,这个里面的信息才是你的准确错误信息,text只是错误状态
[解决办法]
Java code
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,




[解决办法]
探讨

引用:


首先
ajax别用post提交
用get

其次你考虑给ajax加同步锁
async:false,

换成get也试了 同步锁也设了 还是不行
我在火狐上设置个断点 图在上面 发现到这success后不进去 到另一个scuuess()没有参数的这里跳了
看来问题很清楚了,没有返回来值 但是问题也就在这 我就算在action里w……

[解决办法]
如果都不行的话,楼主可能是你return null;这里出问题了,貌似我以前也出现过这样的问题,你改成不要返回值的试试。。。
[解决办法]
return null ;有问题吧,我这个和你很类似,就可以。你可以看看~~


public void findBranchorg() {
Company company = new Company();
List<Company> companyList = service.findBranchorg(company);
JSONArray json = JSONArray.fromObject( companyList);

HttpServletResponse response =ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
try {

response.getWriter().print(json);


} catch (IOException e) {
e.printStackTrace();
}
}





$.ajax({
type:"post",
data:{idBranchorg:idBrachorg},
url:"../sVal.action",
dataType:"json",
success:function(sValJson ){
$("#userCode").val(sValJson[0].sVal);
},
error:function(){
alert("error!");
}
});
[解决办法]
text能返回,可能就是格式有问题吧。
以前我在做项目的时候也碰到过这个问题,因为当时赶的比较急,所以把一个json分开返回了、
[解决办法]
探讨

引用:

return null ;有问题吧,我这个和你很类似,就可以。你可以看看~~


public void findBranchorg() {
Company company = new Company();
List<Company> companyList = service.findBranchorg(company);
JSONArray js……

[解决办法]
毛都没长全就学人家用jquery ajax 大神来给你解决吧 让你这狗日的安心吃饭饭吧 犹豫你用的是$.ajax方法 异步请求进入服务端 服务端返回后要判断 返回后进入哪个方法 (是success方法或还是fail方法) 所以你才返回的时候 要写个boolean类型的变量 名字可以写成success 就这么写吧 定义:


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调试时,可以打开控制台,找到你的页面的代码,然后一步一步的跟踪,看传到后台的参数和返回到前台的参数是不是你想要的,

热点排行