[AJAX GET从表中获取数据库列并填充选择下拉菜单-显示未定义的项目

问题描述 投票:0回答:1

我正在使用AJAX从服务器上的数据库表中获取项目,以在我的剃须刀页面上填充一个下拉选择列表。

数据库表本身具有的列远远超过我实际希望使用AJAX返回的列。

我试图仅从表的每一行中仅拉出两列,但是在尝试这样做时,选择下拉列表将这些元素显示为未定义。

我有一个类似的AJAX请求,当我提取整个表的内容时,该请求可以工作,但是该特定表始终只有两列。在这种情况下,我只需要一个大表中的两列,并且不想通过将更多的数据拉到Web页面中来浪费应用程序的效率。

页面模型:

 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检索的项目只是数据库行ID和另一列称为MarkerName的列

下面的屏幕快照显示我正在服务器上提取正确的项目,因此这里有AJAX不喜欢的东西,我在浏览器调试工具中没有任何错误,所以不确定如何诊断。 >

enter image description here

更新:我也尝试了下面的更改,但仍然发现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);
    }

我正在使用AJAX从服务器上的数据库表中获取项目,以在我的剃须刀页面上填充一个下拉选择列表。数据库表本身具有的列远远多于我实际上想要使用...返回的列。

jquery entity-framework-core asp.net-ajax
1个回答
0
投票

嗯,我终于弄明白了发生了什么,两件事。我的模型页面上的OnGetSelectAllMarkers()方法显示在我的问题的第一部分,它是错误的。该方法正在返回带有匿名类型的列表,并且鉴于从服务器返回的对象是未定义的,因此AJAX似乎不喜欢这种方法。

© www.soinside.com 2019 - 2024. All rights reserved.