jquery - getJSON 仅获取返回数组的第一个元素

标签 jquery asp.net-mvc getjson asp.net-apicontroller

我有一个 API Controller 函数,它返回一个对象数组。以下是我调用函数的方式以及所发生情况的示例:

$.getJSON("/api/mycontroller/myfunc/?id=" + id, function (data) {
   data[0].field1  <- correct value here
   data[0].field2  <- correct value here

   data[1].field1  <- null
   data[1].field2  <- null
}

第一个元素包含如图所示的正确值,但所有其他元素均为空。 data.length 返回数组的正确大小,并且我已经验证我的 Controller 正在返回我预期的值。我在这里错过了什么吗???

更新: 这是我的 Controller 方法:

public data[] myfunc(long id)
{
     return db.MyTable.Where(x => x.ID == id).ToArray();
}  

如前所述,我已经验证返回的数组包含正确的值。

JSON 响应是这样的:

Object { $id="1",  Referral={...},  MeetingID=1,  more...}
$id     "1"
Referral    Object { $id="2",  IntakeMember={...},  Meetings=[3],  more...}
MeetingID   1
MeetingDate "2015-01-01T00:00:00"
Notes   "test1"
ReferralID  22

Object { $ref="16"}
$ref    "16"

Object { $ref="17"}
$ref    "17"

正如您所看到的,元素 2 和 3 中只有这个“ref”值...不知道为什么?

更新#2:

尝试了 $.get 而不是 $.getJSON 没有成功,同样的问题。 我还尝试对 Controller 进行以下更改:

MyData[] data = db.MyTable.Where(x => x.ID == id).ToArray();
JsonResult jsonResult = new JsonResult
{
    Data = data,
    JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
return jsonResult.Data;

我仍然遇到同样的问题。

最佳答案

$.getJSON() 期望返回的数据为 JSON。更改 Controller 方法以返回 JSON

public JsonResult myfunc(long id)
{
     var data = db.MyTable.Where(x => x.ID == id);
     return Json(data, JsonRequestBehavior.AllowGet);
}  

关于jquery - getJSON 仅获取返回数组的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32359728/

相关文章:

javascript - AJAX/javascript 第二次无法正常工作

php - Ajax 在动态更新时淡化 div

java - 我无法循环遍历 JSON 数组来获取下一个数组

jquery - 在执行回调之前等待 .each() .getJSON 请求完成

javascript - 在对话框上显示数据而无需重新加载页面

jquery - 不确定如何正确执行调整大小功能更新

asp.net-mvc - 链接到 iPad 上的 Google 文档查看器上的特定页面

asp.net-mvc - 从ASP MVC 3 Beta更新到RC后出现错误

asp.net-mvc - ASP.NET MVC CTP5 崩溃 IDE

jquery - 如何将 getJSON 错误处理程序与导致该错误的查询关联