ajax获取Servlet中的JSON的问题。

在js中请求ajax,把jsp中的一个Cno传到Servlet中

 $.ajax({
                type :"post",
                url : "ShowDetail?Cno="+Cno,
                async:false, 
                dataType : "json",              
                success : function(data) {              
                },
                error : function() {
                    var student =eval("(" +result +")");
                    alert(student.Cth1);
                } 
            });     

在Servlet中获取后台值,并out.print JSON格式

 out.print("[{'Cno':'"+Cno+"','Cth1':'"+cd.get(0).getCth1()+"']}); 

应该如何通过ajax获取这里面的值

我通过 var student =eval("(" +result +")"); 的方法,但是student.Cth1获取不了值

这里用Error是因为Success没有反应。

5个回答

你的jquery版本>1.4,json格式不标准是不会执行回调的,因为jquery1.4+指定dataType为json,标准json格式字符串才会执行回调

 out.print("[{\"Cno\":\""+Cno+"\",\"Cth1\":\""+cd.get(0).getCth1()+"\"]}); 

 $.ajax({
                type :"post",
                url : "ShowDetail?Cno="+Cno,
                async:false, 
                dataType : "json",              
                success : function(data) {     
                                alert(data[0].Cth1);///你返回的是json数组数组,不是json对象
                },
                error : function() {
                   // var student =eval("(" +result +")");
                   // alert(student.Cth1);
                } 
            });  
showbo
支付宝加好友偷能量挖 回复baidu_15238971: 自己用浏览器开发工具firebug或者chrome f12看下返回的内容
大约 5 年之前 回复
showbo
支付宝加好友偷能量挖 回复baidu_15238971: java我就不懂了。。走error要么是报错,要么json字符串有问题,不标准
大约 5 年之前 回复
baidu_15238971
baidu_15238971 回复showbo: 会不会是json包的关系,我用的是2.3的。现在可以走了,但是总走到ERROR。
大约 5 年之前 回复
baidu_15238971
baidu_15238971 回复showbo: 会不会是json包的关系,我用的是2.3的。现在可以走了,但是总走到ERROR。
大约 5 年之前 回复
showbo
支付宝加好友偷能量挖 回复baidu_15238971: out.print("[{\"Cno\":\"" + Cno + "\",\"Cth1\":\"" + cd.get(0).getCth1() + "\"]}"); 你之前发的json格式是错误,按这个改
大约 5 年之前 回复
baidu_15238971
baidu_15238971 回复showbo: 我改成你写的那个格式了可是还是没有取到.T.T
大约 5 年之前 回复
showbo
支付宝加好友偷能量挖 而且你语法是错的吧?没报错?贴出来才看到 out.print("[{\"Cno\":\"" + Cno + "\",\"Cth1\":\"" + cd.get(0).getCth1() + "\"]}");
大约 5 年之前 回复
 student[0].Cth1

你这传过来的应该是个json数组,所以不应该直接用对象获取。应该写成result[0].Cth1.
如果再获取不到 你再尝试使用var student =eval("(" +result +")") student[0].Cth1.

baidu_15238971
baidu_15238971 还是不行,ajax既没有返回Success也没有返回Error.是不是JSON的格式不够严格的原因??
大约 5 年之前 回复

你调试下,输出后台的json,然后修改ajax的success分支,这个分支的参数data就是你后台返回的JSON数据。
看看代码到底走到哪里错了:后台输出、success/error都添加调试信息。祝好!

 $.ajax({
                    type :"post",
                    url : "ShowDetail?Cno="+Cno,
                    async:false, 
                    dataType : "json",              
                    success : function(data) {   
                        alert("success.");
                        //后台返回的JSON数组访问
                        if(data!=null&&data.length>0){
                            var student = data[0];
                            console.log("student cno:"+student.cno);
                            console.log("student Cth1:"+student.Cth1);
                        }
                    },
                    error : function() {
                       alert("error .");
                    } 
                }); 

你断点测试,看后台的方法响应了吗

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐