我在页面中通过ajax调用后台方法服务,实现联动!ajax方法如下:$.ajax({
                        type: "post",
                        async: false,
                        contentType: "application/json; charset=utf-8",
                        data: "{id:'" + id + "'}",
                        url: "AllAssessResults.aspx/GetObjListByDeptId",    //后台webservice里的方法名称
                        dataType: "json",
                        success: function (data) {
                            alert(data);
                            var optionstring = "";
                            var dataObj = $.parseJSON(data);
                            //var dataObj = eval("(" + data + ")");                            for (var i = 0; i < dataObj.length; i++) {
                                optionstring += "<option value=\"" + dataObj[i].usercode + "\" >" + dataObj[i].username + "</option>";
                            }                            $("#selectObj").html(optionstring);                        },
                        error: function (msg) {
                            alert("出错了!");
                        }
                    });
后台得到的json数据如下:
[
{ "username":"魏", "usercode":"A1"},
{ "username":"邢", "usercode":"A2"},
{ "username":"杨", "usercode":"A3"},
{ "username":"王", "usercode":"A4"},
{ "username":"叶", "usercode":"A5"},
{ "username":"宋", "usercode":"A6"},
{ "username":"苏", "usercode":"A7"}
]
解析时候总是提示我:'length' 为空或不是对象  应该是这个【dataObj.length】。因为对json操作不熟悉,哪位哥哥有时间帮我看看jQueryAjaxJSONJavaScriptasp.net

解决方案 »

  1.   

    data即是JSON格式,无需使用$.parseJSON(data)
      

  2.   

    你确认返回的是data是正确的吗?
      

  3.   

    我贴出的数据就是我再后台跟踪调试时取出的记录,我怀疑是不是我的前台ajax用法有问题?
      

  4.   

    使用parseJSON是要解析成数组对象吧
      

  5.   

    data不是JSON格式的进不到回调吧
      

  6.   

    在你的for循环直接使用data试试
      

  7.   

    $.ajax({
                            type: "post",
                            async: false,
                            contentType: "application/json; charset=utf-8",
                            data: "{id:'" + id + "'}",
                            url: "AllAssessResults.aspx/GetObjListByDeptId",    //后台webservice里的方法名称
                            dataType: "json",
                            success: function (data) {
                                //alert(data);
                                var optionstring = "";
    //                            var dataObj = $.parseJSON(data);
                                //var dataObj = eval("(" + data + ")");                            for (var i = 0; i < data.length; i++) {
                                    optionstring += "<option value=\"" + dataObj[i].usercode + "\" >" + dataObj[i].username + "</option>";
                                }                            $("#selectObj").html(optionstring);                        },
                            error: function (msg) {
                                alert("出错了!");
                            }
                        });
      

  8.   


    $.ajax({
                            type: "post",
                            async: false,
                            contentType: "application/json; charset=utf-8",
                            data: "{id:'" + id + "'}",
                            url: "AllAssessResults.aspx/GetObjListByDeptId",    //后台webservice里的方法名称
                            dataType: "json",
                            success: function (data) {
                                //alert(data);
                                var optionstring = "";
    //                            var dataObj = $.parseJSON(data);
                                //var dataObj = eval("(" + data + ")");                            for (var i = 0; i < data.length; i++) {
                                    optionstring += "<option value=\"" + dataObj[i].usercode + "\" >" + dataObj[i].username + "</option>";
                                }                            $("#selectObj").html(optionstring);                        },
                            error: function (msg) {
                                alert("出错了!");
                            }
                        });
      

  9.   

    var dataObj = $.parseJSON(data);
    parseJSON : function(data) {
    if (typeof data !== "string" || !data) {
    return null;
    }
    如果返回的确定是JSON格式的,把红色部分去了,不然parseJSON返回null。
      

  10.   

    测试方法
    1,在aspx直接返回json数据测试下
    2,返回的是dataType: "json",应该不用parseJSON
      

  11.   

    本帖最后由 net_lover 于 2013-04-17 16:14:10 编辑
      

  12.   

    后台代码需要写成
    [System.Web.Services.WebMethod]
      public static string GetObjListByDeptId(String id)
      {
        return "返回json字符串";
      }
      

  13.   

    改成optionstring += "<option value=\"" + data[i].usercode + "\" >" + data[i].username + "</option>";也是一样 空值
      

  14.   

    改成这样就可以了,不知道为什么要这么改呢?data.d 是什么对象?