getJSON 只获取返回数组的第一个元素
getJSON only getting first element of returned array
我有一个 api 控制器函数,它 returns 一个对象数组。以下是我如何调用我的函数以及发生的情况的示例:
$.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
returns 数组的正确大小并且我已验证我的控制器正在返回我预期的值。我是不是漏掉了什么???
更新:
这是我的控制器方法:
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
但没有成功,同样的问题。
我还尝试对控制器进行以下更改:
MyData[] data = db.MyTable.Where(x => x.ID == id).ToArray();
JsonResult jsonResult = new JsonResult
{
Data = data,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
return jsonResult.Data;
我仍然遇到同样的问题。
$.getJSON()
预计 returned 数据为 JSON。将您的控制器方法更改为 return JSON
public JsonResult myfunc(long id)
{
var data = db.MyTable.Where(x => x.ID == id);
return Json(data, JsonRequestBehavior.AllowGet);
}
出于某种原因,当我在我的数据库中创建一个视图并将其用于 return 数据而不是直接查询它所在的 table 时,我的问题得到了解决。我把这个听了以防万一任何人都遇到过与我类似的问题,但如果有人知道为什么会发生这种情况,我很想听听...请对此答案发表评论。
我有一个 api 控制器函数,它 returns 一个对象数组。以下是我如何调用我的函数以及发生的情况的示例:
$.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
returns 数组的正确大小并且我已验证我的控制器正在返回我预期的值。我是不是漏掉了什么???
更新: 这是我的控制器方法:
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
但没有成功,同样的问题。
我还尝试对控制器进行以下更改:
MyData[] data = db.MyTable.Where(x => x.ID == id).ToArray();
JsonResult jsonResult = new JsonResult
{
Data = data,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
return jsonResult.Data;
我仍然遇到同样的问题。
$.getJSON()
预计 returned 数据为 JSON。将您的控制器方法更改为 return JSON
public JsonResult myfunc(long id)
{
var data = db.MyTable.Where(x => x.ID == id);
return Json(data, JsonRequestBehavior.AllowGet);
}
出于某种原因,当我在我的数据库中创建一个视图并将其用于 return 数据而不是直接查询它所在的 table 时,我的问题得到了解决。我把这个听了以防万一任何人都遇到过与我类似的问题,但如果有人知道为什么会发生这种情况,我很想听听...请对此答案发表评论。