【问题标题】:javascript does not bind the data to HTML Select elementjavascript 不会将数据绑定到 HTML Select 元素
【发布时间】:2015-11-23 07:40:18
【问题描述】:

我有这个 html5 或 Dropdown 的选择元素。我正在使用 c# 从正确获取的数据库中获取数据。当我尝试使用 java 脚本将从 db 获取的数据绑定到选择元素时,它只是不这样做。我可以在 java 脚本变量中获取所有用户名,但是当我尝试将其绑定到下拉/选择元素时,它只是没有出现

我在 MVC 控制器中的 C# 方法是

 public JsonResult GetUsersList()
    {
       // var userList= new List<>
        var userList = _db.UserInfromations.ToList();
        return Json(userList, JsonRequestBehavior.AllowGet);
    }

我的选择元素

<select id="userDropDown" required name="userDropDown"></select>

和我的 java 脚本,我将添加我到目前为止所做的所有尝试.. 为成功创建了单独的函数,并且除了注意到之外的所有工作

 jQuery(document).ready(function () {
   // debugger;

    $.ajax({
        type: "GET",
        url: "/User/GetUsersList",
        contentType: "application/json;charset=utf-8",
        dataType: "json",
    })
        .success(function (data) {
            var userName = data.UserName;
            $("#userDropDown").val(userName);
            return false;
        })
        .error(function () {
            window.ajaxErrorMessage();
        });
}(jQuery));

单独的 Success 函数

 function displayUser(response) {
    var getData = response;
    if (getData.length > 0) {
        var user = "";
       // user = "";
        for (var i = 0; i < getData.length; i++) {
            user += " " + getData[i].UserName ;
        }
       // $("#userDropDown").val(user);
        $("#userDropDown").text(user);
        //$("#userDropDown").html(user);
    }
}

【问题讨论】:

  • 在成功时使用 console.log 并检查即将发生的响应
  • 您是否将您的用户数据放在 标签中..
  • 正如我所说,它获取数据但本节不绑定该数据 // $("#userDropDown").val(user); $("#userDropDown").text(user); //$("#userDropDown").html(user);
  • 您发回一组UserInfromations。您不能将下拉列表的值设置为复杂对象的数组。您是否尝试根据每个 UserInfromations 的值向下拉列表添加选项?
  • 你的 json 对象看起来怎么样?

标签: javascript jquery asp.net-mvc html


【解决方案1】:

您需要将其作为&lt;option&gt; 添加到选择框中。您可能还需要解析 json。

用下面的代码替换这个...$("#userDropDown").val(userName);

$("#userDropDown").append($('<option/>', { 
        value: userName,
        text : userName 
}));

对于多个添加,使用$.each()。您还需要JSON.parse(data) 才能获得正确的格式。

$.each(userName, function (index, value) {
    $('#userDropDown').append($('<option/>', { 
        value: value,
        text : value 
    }));
});    

【讨论】:

    【解决方案2】:

    您需要为数组中的每个 json 对象创建一个选项标签,然后选择每个对象的属性 试试:

     jQuery(document).ready(function () {
           // debugger;
    
            $.ajax({
                type: "GET",
                url: "/User/GetUsersList",
                contentType: "application/json;charset=utf-8",
                dataType: "json",
            })
                .success(function (data) {
                   $.each(data,function(i,v){
                      $("#userDropDown").append($('<option/>', { 
                value: v.Id,
                text : v.UserName 
            })); 
        })
    
                })
                .error(function () {
                    window.ajaxErrorMessage();
                });
        }(jQuery));
    

    【讨论】:

    • 嗯,这已经做了一些事情,但我看不到任何东西下拉列表仍然是空的,我需要在
    • 我做错了什么,我能得到答案吗
    • 您需要为数组中的每个 json 对象附加一个选项标签,并且您的键错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 2012-03-23
    • 2016-02-23
    • 1970-01-01
    • 2018-06-01
    • 2016-06-05
    相关资源
    最近更新 更多