高分求助:一天没解决了,好人抽个空帮个忙,散分了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是否正确
据分析楼主第一步应该没有问题。
[解决办法]
[解决办法]
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,
[解决办法]
[解决办法]
如果都不行的话,楼主可能是你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分开返回了、
[解决办法]
[解决办法]
毛都没长全就学人家用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调试时,可以打开控制台,找到你的页面的代码,然后一步一步的跟踪,看传到后台的参数和返回到前台的参数是不是你想要的,