【问题标题】:return JSON Object not reading返回 JSON 对象未读取
【发布时间】:2018-07-06 13:21:41
【问题描述】:

我想显示我的数据和其中的行数。 我正在返回 json,那里有一些错误

    public JsonResult NewData()
    {
        List<mydatasample> mydata = new List<mydatasample>(); 
        mydata.Add(new mydatasample { bookName = " Book 1 ", publisherName = " Name1 ", publishYear = 2018 });
        mydata.Add(new mydatasample { bookName = " Book 2 ", publisherName = " Name2 ", publishYear = 2018 });
        mydata.Add(new mydatasample { bookName = " Book 3 ", publisherName = " Name3 ", publishYear = 2018 });
        mydata.Add(new mydatasample { bookName = " Book 4 ", publisherName = " Name4 ", publishYear = 2018 });
        mydata.Add(new mydatasample { bookName = " Book 5 ", publisherName = " Name5 ", publishYear = 2018 });
        mydata.Add(new mydatasample { bookName = " Book 6 ", publisherName = " Name6 ", publishYear = 2018 });
        mydata.Add(new mydatasample { bookName = " Book 7 ", publisherName = " Name7 ", publishYear = 2018 });
        mydata.Add(new mydatasample { bookName = " Book 8 ", publisherName = " Name8 ", publishYear = 2018 });
        mydata.Add(new mydatasample { bookName = " Book 9 ", publisherName = " Name9 ", publishYear = 2018 });
        mydata.Add(new mydatasample { bookName = " Book 10 ", publisherName = " Name10 ", publishYear = 2018 });
        int rowcount= mydata.Count;

        return Json(new { mydata = mydata,rowcount = rowcount},  JsonRequestBehavior.AllowGet);
    }

这是我的 ajax 代码。

出现无法读取的错误

e[j].bookName, e[j].publisherName, e[j].publishYear

具体来说我的错误是

SomeActionMethod:59 Uncaught TypeError: 无法读取属性 未定义的“书名” 在 Object.success (SomeActionMethod:59) 着火(jquery-1.10.2.js:3062) 在 Object.fireWith [as resolveWith] (jquery-1.10.2.js:3174) 完成后(jquery-1.10.2.js:8249) 在 XMLHttpRequest.callback (jquery-1.10.2.js:8792)

        $.ajax(
        {
            cache: false,
            type: "GET",
            url: hosturl,
            success: function (e)
            {

                var var1 = "<table>";
                var1 += "<tr> <th> Book Name </th> <th> Publisher Name </th> <th> Publish Year </th> </tr>";
                for (var j = 0; j < 10; j++)
                {
                    //error is coming in this line
                    var1 += "<tr>" + "<td>" + e[j].bookName + "</td>" + "<td>" + e[j].publisherName + "</td>" + "<td>" + e[j].publishYear + "</td>" + "</tr>";
                }
                var1 += "</table>";
                $("#t1").append(var1);

                var rowCount = $("#t1").find.length;
                for(var j = 1; j<e.rowcount; j++)
                {
                     var rowCount = $("#t1").find.length;
                     rowCount++;
                }
                var1 += "</table>";
                $("#t1").append(rowCount);
            },

【问题讨论】:

  • 尝试使用 e.mydata[j].bookName
  • 如果您将console.log(e); 添加到成功处理程序的顶部,然后查看控制台,您可能会更清楚为什么它不起作用。

标签: c# json ajax


【解决方案1】:

你像这样创建一个 json 对象:

{  
    "mydata":[  
       {  
          "bookName":" Book 1 ",
          "publisherName":" Name1 ",
          "publishYear":2018
       },
       {  
          "bookName":" Book 2 ",
          "publisherName":" Name2 ",
          "publishYear":2018
       },
      ...
    ],
    "rowcount":10
}

你必须修改你的循环:

for (var j = 0; j < e.rowcount; j++) {
    var1 += "<tr>" + "<td>" + e.mydata[j].bookName + "</td>" + "<td>" + e.mydata[j].publisherName + "</td>" + "<td>" + e.mydata[j].publishYear + "</td>" + "</tr>";
}

【讨论】:

    【解决方案2】:

    您需要先将返回的对象转换为 javascript 对象,因为默认返回的对象将是 JSON 字符串值,而不是您可以通过 [] 访问的对象。

    考虑以下 sn-p:

    $.ajax(
            {
                cache: false,
                type: "GET",
                url: hosturl,
                success: function (e)
                {
                  var data = JSON.parse(e);
                  // now you can call something like this
                  console.log(data[0].bookName);
                }
            });
    

    现在您有了一个对象,您可以根据原始问题循环并从中提取信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      相关资源
      最近更新 更多