以下是原代码:
    Servlet如下:
public class JsonServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        StringBuffer sb = new StringBuffer();
        sb.append("({\"").append("sb").append("\":").append("{username:\"").append("zhangsna\",")
        .append("password:\"").append("jkc126").append("\"}})");
        resp.getWriter().print(sb);    }    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         doGet(req, resp);   //To change body of overridden methods use File | Settings | File Templates.
    }
}js如下:$(document).ready(function(){
    $.get("test",null,function(data){
        var obj = eval(data);
        var objval = obj["sb"];
        var username = objval.username;
        alert(username);
    })
})
jsp如下:<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head><title>Simple jsp page</title></head>
  <script type="text/javascript" src="jslib/jquery.js"></script>
  <script type="text/javascript" src="jslib/test.js"></script>
  <body></body>
</html>问题:当js去服务器端servlet请求json格式的数据后在js页面不能解析出得到的数据,具体错误为objval未定义,请高手帮忙解决下!

解决方案 »

  1.   

    eval那有这样用的像这样<script>
    var x = "var y = {name:'haha',psd:'jjj'}";
    eval(x);
    alert(y.name);
     </script>
      

  2.   

    json最好是keyvalue都加“”,比如返回的是{"username":"张三"}
      

  3.   

    试过不管用,我用的事jquery1.5的版本!
      

  4.   


    绝对可以像我那样用,因为是照录视频的老师做的,只是不知道那个小细节出了问题!
     </script>
    [/Quote]
      

  5.   

    你servlet中的username和password要用大括号引起来
    {"sb":[{username:"zhangsna",password:"jkc126"}]}
      

  6.   

    我试了一下,可以得出数据啊。你可以进到servlet中吗,如果可以的话应该是没问题的。我用的是jquery-1.4.2.js。
    $.get("test.do",null,function(data){
      var obj = eval(data);
      var objval = obj["sb"];
      var username = objval.username;
      alert(username);
    不知道你的servlet是怎么配的,不过应该是test.do或者其他后缀吧
      

  7.   

    返回的json格式错了({"sb":{username:"zhangsna",password:"jkc126"}})去掉2边的括号
      

  8.   

    没太仔细看,你试试下面的。$(document).ready(function(){
        $.get("test",null,function(data){
        var obj;
        try {
            obj = eval(data);
        } catch (e){
            obj = data;
        }
        var objval = obj["sb"];
        var username = objval.username;
        alert(username);
      })
    })
      

  9.   

    在firebug中调试监测到的结果如下(在var obj = eval(data)处设的断点):
    this
    Object { type="GET", url="test", 更多...}

    arguments
    ["{"sb":{username:"zhangsna",password:"jkc126"}}", "success"]

    data
    "{"sb":{username:"zhangsna",password:"jkc126"}}"

    obj
    undefined

    objval
    undefined

    passwrod
    undefined

    data已经返回了信息,为什么在解析后就是得不到值呢?
      

  10.   

    在firebug中测试data返回了数据也就证明我的servlet 配置没有错误,jqeury换成1.4的也还是不行!
      

  11.   


    <script type="text/javascript"> function parseJSON(data){
    var JSON = eval(data);
    alert(JSON["sb"]["username"]);
    alert(JSON["sb"]["password"]);
    }

    window.onload=function(){
    parseJSON("({\"sb\":{username:\"zhangsna\",password:\"jkc126\"}})");
    }
    </script>
      

  12.   

    http://blog.csdn.net/UnOpenMyCode/archive/2010/09/27/5909719.aspx
      

  13.   

    eval一下!,把传过来的数据用eval处理一下就得到你想要的json数据了!