Я использую AJAX для получения элементов из таблицы базы данных на сервере, чтобы заполнить раскрывающийся список выбора на моей странице бритвы.
В самой таблице БД содержится гораздо больше столбцов, чем я на самом деле хочу вернутьиспользуя AJAX.
Я пытаюсь просто вытащить только два столбца из каждой строки таблицы, однако в моей попытке выпадающий список выбора показывает элементы как неопределенные.
У меня есть аналогичный AJAX-запрос, который работает, когда я извлекаю содержимое всей таблицы, но эта конкретная таблица в любом случае имеет только два столбца. В этом сценарии мне нужны только два столбца из большой таблицы, и я не хочу снижать эффективность приложения, вытягивая на веб-страницу больше данных, чем необходимо.
Модель страницы:
public IActionResult OnGetSelectAllMarkers()
{
var marker = _context.Marker
.Where(x => x.LayerGroupID == 1)
.Select(x => new
{
x.ID,
x.MarkerName,
// etc, we only include the columns we need for the query.
}).ToList();
return new JsonResult(marker);
}
AJAX:
var options = {};
options.url = "/Maps/Edit?handler=SelectAllMarkers";
options.type = "GET";
options.dataType = "json";
options.success = function (data) {
data.forEach(function (element) {
$("#editMarkerSelect").append('<option value="' + element.ID + '">' + element.MarkerName + '</option>');
});
$('#editMarkerSelect option').clone().appendTo('#bindToMapObjectSelect');
}
options.error = function () {
$("#editMarkerSelectMessageBar").html("Error while making Ajax call!");
setTimeout(function () { $("#editMarkerSelectMessageBar").html(''); }, 5000);
};
$.ajax(options);
Элементы, которые я хочу получить с помощью AJAX, - это просто идентификатор строки базы данных и еще один столбец с именем MarkerName
На приведенном ниже снимке экрана показано, что я вытягиваю правильные элементына сервере, поэтому здесь есть что-то, что не нравится AJAX, я не получаю никаких ошибок в инструменте устранения ошибок браузера, поэтому не знаю, как его диагностировать.
Обновление: я также попробовал указанные ниже изменения, но все же обнаружил, что AJAX видит массив объектов как неопределенный:
public IActionResult OnGetSelectAllMarkers()
{
List<Marker> data = _context.Marker
.Where(x => x.LayerGroupID == 1)
.Select(x => new Marker
{
ID = x.ID,
MarkerName = x.MarkerName,
// etc, we only include the columns we need for the query.
}).ToList();
return new JsonResult(data);
}