不知道是不是JSON数组有问题,我现在后台传送过来的数据格式为:"{'userame':[{'username':王国军','names':'王先生'}]}" 前台的JS,JSON获取方式为:     var listLineMen = eval("("+data+")");
                var listLineMenHtml = "";
                alert( listLineMen);
                for (var i = 0; i < listLineMen.length; i++) {
              listLineMenHtml = listLineMenHtml + "<a href='javascript:;' v='" + listLineMen[i].username + "'>" + listLineMen[i].names + "</a>";
                }
                $("#priceLinkMenNex").html(listLineMenHtml);alert( listLineMen)处能够获取到后台传来的数据,但是listLineMen[i].username 和listLineMen[i].names处提示:undefined我感觉是数据格式有问题,因为这段代码我是从别人那边抄过来的,正常的。如果是数据格式有问题,那么根据上面这个代码,这个数据的格式应该是什么样的?

解决方案 »

  1.   

    json格式有问题!{
        "userame": [
            {
                "username": "王国军",
                "names": "王先生"
            }
        ]
    }
      

  2.   

    "[{'username':王国军','names':'王先生'}]"
      

  3.   

    alert(listLineMen.userame.username+","+listLineMen.userame.names)
      

  4.   

    json 格式有问题将左右两边的"符号去掉 ,并且 "王国军" 前面少一个'符号
    "{'userame':[{'username':王国军','names':'王先生'}]}" 
    修改后为
    {'userame':[{'username':'王国军','names':'王先生'}]} 
    然后再 var listLineMen = eval("("+data+")");代码也有问题
    listLineMen 为对象,并不是数组,所以在循环中不能用 listLineMen.length 而应该用listLineMen.userame.length
    修改后如下:
     var listLineMen = eval("("+data+")");
                    var listLineMenHtml = "";
                    alert( listLineMen);
                    for (var i = 0; i < listLineMen.userame.length; i++) {
                  listLineMenHtml = listLineMenHtml + "<a href='javascript:;' v='" + listLineMen.userame[i].username + "'>" + listLineMen.userame[i].names + "</a>";
                    }
                    $("#priceLinkMenNex").html(listLineMenHtml);
      

  5.   

    都试过,alert( listLineMen)能显示后台传来的数据,但是listLineMen.userame[i].names获取不到,提示undefined
      

  6.   

    alert({'userame':[{'username':'王国军','names':'王先生'}]}.userame[0].username);
      

  7.   


    var  tt = listLineMen.username;
     
    for(i=0;i<tt.length;i++){
       var  ss = tt[i];
       alert(ss.username + ss.names);
    }
    上面的应该可以输出值,明白json的数据格式关系。
      

  8.   

    JSON 格式有问题的,,下面是根据你提供写的
    可以正常运行。eval({'userame':[{'username':'王国军','names':'王先生'}]}).userame[0].names
      

  9.   

    var listLineMen = eval("("+data+")"); 
    var listLineMenHtml = "";                 
    alert( listLineMen); //这里我得到的数据是:{'userame':[{'username':'王国军','names':'王先生'}]}但是:alert{listlineMen.username[0].username}得到的是值空的?
      

  10.   

    问题已解决,估计是.net的一个特性。
    换其他语言环境,正常通过。
    不管你是否数据格式传对与否,通过.net必须eval("("+data+")")否则报错要么提示undefined 。                var listLineMen = eval("("+data+")");//通过解析
                    //var listLineMen = eval(data);//报错,提示缺少“)”