jquery的ajax调用后台服务方法实现下拉框联动时,json解析问题?

liu_dashi 2013-04-17 02:49:23
我在页面中通过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操作不熟悉,哪位哥哥有时间帮我看看
...全文
248 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu_dashi 2013-04-17
  • 打赏
  • 举报
回复
引用 14 楼 net_lover 的回复:
本帖最后由 net_lover 于 2013-04-17 16:14:10 编辑你需要这样 var dataObj = $.parseJSON(data); 改成 var dataObj = $.parseJSON(data.d); 试试
改成这样就可以了,不知道为什么要这么改呢?data.d 是什么对象?
liu_dashi 2013-04-17
  • 打赏
  • 举报
回复
引用 11 楼 rencht 的回复:
你的循环里面显然写错了嘛
改成optionstring += "<option value=\"" + data[i].usercode + "\" >" + data[i].username + "</option>";也是一样 空值
孟子E章 2013-04-17
  • 打赏
  • 举报
回复
后台代码需要写成 [System.Web.Services.WebMethod] public static string GetObjListByDeptId(String id) { return "返回json字符串"; }
孟子E章 2013-04-17
  • 打赏
  • 举报
回复
你需要这样
var dataObj = $.parseJSON(data);
改成
var dataObj = $.parseJSON(data.d);

试试

孟子E章 2013-04-17
  • 打赏
  • 举报
回复
测试方法 1,在aspx直接返回json数据测试下 2,返回的是dataType: "json",应该不用parseJSON
bbjbepzz 2013-04-17
  • 打赏
  • 举报
回复
var dataObj = $.parseJSON(data); parseJSON : function(data) { if (typeof data !== "string" || !data) { return null; } 如果返回的确定是JSON格式的,把红色部分去了,不然parseJSON返回null。
rencht 2013-04-17
  • 打赏
  • 举报
回复
你的循环里面显然写错了嘛
rencht 2013-04-17
  • 打赏
  • 举报
回复

$.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("出错了!");
                        }
                    });
liu_dashi 2013-04-17
  • 打赏
  • 举报
回复
$.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("出错了!");
                        }
                    });
rencht 2013-04-17
  • 打赏
  • 举报
回复
引用 7 楼 liu_dashi 的回复:
引用 6 楼 rencht 的回复:引用 4 楼 liu_dashi 的回复: 引用 1 楼 rencht 的回复:data即是JSON格式,无需使用$.parseJSON(data)使用parseJSON是要解析成数组对象吧 在你的for循环直接使用data试试不行,得到的都是空啊
改了之后的代码拿出来看看
liu_dashi 2013-04-17
  • 打赏
  • 举报
回复
引用 6 楼 rencht 的回复:
引用 4 楼 liu_dashi 的回复: 引用 1 楼 rencht 的回复:data即是JSON格式,无需使用$.parseJSON(data)使用parseJSON是要解析成数组对象吧 在你的for循环直接使用data试试
不行,得到的都是空啊
rencht 2013-04-17
  • 打赏
  • 举报
回复
引用 4 楼 liu_dashi 的回复:
引用 1 楼 rencht 的回复:data即是JSON格式,无需使用$.parseJSON(data)使用parseJSON是要解析成数组对象吧
在你的for循环直接使用data试试
rencht 2013-04-17
  • 打赏
  • 举报
回复
引用 2 楼 net_lover 的回复:
你确认返回的是data是正确的吗?
data不是JSON格式的进不到回调吧
liu_dashi 2013-04-17
  • 打赏
  • 举报
回复
引用 1 楼 rencht 的回复:
data即是JSON格式,无需使用$.parseJSON(data)
使用parseJSON是要解析成数组对象吧
liu_dashi 2013-04-17
  • 打赏
  • 举报
回复
引用 2 楼 net_lover 的回复:
你确认返回的是data是正确的吗?
我贴出的数据就是我再后台跟踪调试时取出的记录,我怀疑是不是我的前台ajax用法有问题?
孟子E章 2013-04-17
  • 打赏
  • 举报
回复
你确认返回的是data是正确的吗?
rencht 2013-04-17
  • 打赏
  • 举报
回复
data即是JSON格式,无需使用$.parseJSON(data)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧