getJSON получает только первый элемент возвращаемого массива
У меня есть функция 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
возвращает правильный размер массива, и я проверил, что мой контроллер возвращает значения, которые я ожидаю. Я что-то упустил???
Обновление: Вот мой метод контроллера:
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;
Я все еще испытываю ту же проблему.
2 ответа:
$.getJSON()
ожидает, что возвращаемые данные будут JSON. Измените метод контроллера, чтобы вернуть JSONpublic JsonResult myfunc(long id) { var data = db.MyTable.Where(x => x.ID == id); return Json(data, JsonRequestBehavior.AllowGet); }
По какой-то причине моя проблема была решена, когда я создал представление в своей базе данных и использовал его для возврата данных, а не для прямого запроса таблицы, в которой он находится. Я поставил этот слух на случай, если кто-то столкнется с проблемой, подобной моей, но если кто-то знает, почему это произошло, мне было бы интересно услышать...пожалуйста, прокомментируйте этот ответ.