首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON数据无法在jQuery中正确序列化

JSON数据无法在jQuery中正确序列化
EN

Stack Overflow用户
提问于 2012-08-31 04:32:57
回答 2查看 204关注 0票数 1

我一直在使用最近发布的jQueryGannt插件/应用程序from here,我正在尝试编写一个下拉列表,其中填充了服务器上不同存储的甘特图的名称。为了生成这个下拉列表,我使用以下函数:

代码语言:javascript
复制
$.ajax({
    url: "GanttLoader.ashx?action=getGantts",
    context: document.body, 
    type: "GET",
    dataType: "json",
    success: function(data) {
        if(data.gantts != null) {
            for(var gantt in data.gantts) {
                alert(gantt.name + " is locked " + gantt.locked);
                var toAppend = $("<option/>").val(gantt.name).html(gantt.name);
                if(gantt.locked) { toAppend.attr("disabled", "disabled"); }
                $("#saved_gantts").append(toAppend);
            }
            $("#saved_gantts").append($("<option/>").val("add new").html("add new"));
                saved_gantts_loaded = true;
            }
            else if(data.status == "none") {
                $("#saved_gantts").append($("<option/>").val("add new").html("add new"));
            }
        },
        error: function() { alert("couldn't load gantt charts"); }
});

目前,这是服务器发送来生成下拉列表的内容(还没有发送甘特图数据,只有打开的甘特图和当前正在编辑的甘特图的简单列表):

代码语言:javascript
复制
{
  "gantts": [
    {
      "name": "other",
      "locked": true
    },
    {
      "name": "test",
      "locked": true
    }
  ]
}

由于某些原因,在成功函数的调用中,For循环循环遍历存储在数组中的两个对象,但警报总是打印"undefined is locked undefined"。有人知道返回我的处理程序或JSON出了什么问题吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-31 04:37:47

您应该使用data.gantts[gantt].name而不是gantt.name

以下是更新后的代码:

代码语言:javascript
复制
$.ajax({
    url: "GanttLoader.ashx?action=getGantts",
    context: document.body, 
    type: "GET",
    dataType: "json",
    success: function(data) {
        if(data.gantts != null) {
            var gantts = data.gantts;
            for(var i in gantts) {
                alert(gantts[i].name + " is locked " + gantts[i].locked);
                var toAppend = $("<option/>").val(gantts[i].name).html(gantts[i].name);
                if(gantts[i].locked) { toAppend.attr("disabled", "disabled"); }
                $("#saved_gantts").append(toAppend);
            }
            $("#saved_gantts").append($("<option/>").val("add new").html("add new"));
                saved_gantts_loaded = true;
            }
            else if(data.status == "none") {
                $("#saved_gantts").append($("<option/>").val("add new").html("add new"));
            }
        },
        error: function() { alert("couldn't load gantt charts"); }
});
票数 3
EN

Stack Overflow用户

发布于 2012-08-31 04:43:48

您可能想要使用

代码语言:javascript
复制
for (i=0;i<data.gantts.length;i++) {
    alert(data.gantts[i] + " is locked " + data.gantts[i].locked);

我已经找到了for(.. )在...)在处理某些框架时,格式有点不可靠

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12205007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档