var params = "{str:'我来了'}";
            $.ajax({
                type: "POST",
                url: "text4.aspx/ddlValue",
                data: params,
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (r) {
                    var a = r.d;         //从后台接收的list<class>格式转成的json
                    alert(a[0].Id)//如果这样取不到值;                },
                error: function (msg) { alert("e") }
            })        如果我把a 也就是r.d的值显示在页面上复制下来
        我这样写
               让   a=[{ "Id": 1, "Type": "表示层" }, { "Id": 14, "Type": "逻辑层" }, { "Id": 19, "Type": "数据访问层" }, { "Id": 20, "Type": "其他" }, { "Id": 21, "Type": "ajax" }, { "Id": 25, "Type": "格式转换" }, { "Id": 35, "Type": "试题"}];
          页这样就能够成功的取到值为什么
          我r.id这样就取不到alert(r.id)的值就和我上面是一样的

解决方案 »

  1.   

    将返回的字符串用Eval执行一遍转换为json对象。
      

  2.   

    可能返回不是json格式的要转换一下。var a=eval(r);
      

  3.   

    a=[{ "Id": 1, "Type": "表示层" }, { "Id": 14, "Type": "逻辑层" }, { "Id": 19, "Type": "数据访问层" }, { "Id": 20, "Type": "其他" }, { "Id": 21, "Type": "ajax" }, { "Id": 25, "Type": "格式转换" }, { "Id": 35, "Type": "试题"}];
    把a当数组用就是了
    $.each(r,function(i){
      alert(r[i].Id);
    })