Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合框/下拉框数据更新后未更新_C#_Javascript_Jquery_Ajax_Model View Controller - Fatal编程技术网

C# 组合框/下拉框数据更新后未更新

C# 组合框/下拉框数据更新后未更新,c#,javascript,jquery,ajax,model-view-controller,C#,Javascript,Jquery,Ajax,Model View Controller,一个很长的解释,但我相信这是一个相当简单的问题。我想我遗漏了什么 从下拉菜单中选择用户角色后,我将使用ajax将该角色的部分视图加载到一个DIV中: $.ajax({ type: 'post', data: { id: roleId}, url: '@Url.Action("Manage","User")', success: function (data) { $("#user-manage

一个很长的解释,但我相信这是一个相当简单的问题。我想我遗漏了什么

从下拉菜单中选择用户角色后,我将使用ajax将该角色的部分视图加载到一个DIV中:

        $.ajax({
        type: 'post',
        data: { id: roleId},
        url: '@Url.Action("Manage","User")',
        success: function (data) {
            $("#user-manage").html(data);
        }
    });
现在,在页面上有一个带有用户列表的组合框和一个删除按钮。 我突出显示一个用户,按下删除按钮,用户被删除

太好了!它可以工作,但是我的问题是,在刷新页面之前,被删除的用户不会从组合框列表中消失。我无法刷新页面,因为这意味着网站用户必须重新选择角色

所以,问题是,我如何能让用户在我点击删除按钮后立即消失在组合框中

现在,当按下delete按钮时,所选用户ID被传递到以下ajax调用,该调用删除所选用户并返回更新的JSON用户列表:

    function removeUser() {
    var selectedUser = $("#user-combo").find(":selected").val(); //grab selected user
    var selectedForRole = $("#role-id").val(); //hidden field to store selected role

    $.ajax({
        url:"/User/Delete", //Delete selected user and return updated Json list
        data: { id: selectedUser , roleId: selectedForRole },
        type: 'post',
        success: function (data) {
            var userList = $("#user-combo");
            var listContent;

            $.each(data, function (index, item) {
                listContent += "<option value='" + item.Id + "'>" + item.Name + "</option>";
            });

            userList.html(listContent);
        }
    });
}    

就这么简单:

$("#comboBox option[value='USER-NAME']").remove();
将其放入
removeUser()
中。功能

事实上,该函数不能从远程列表中删除用户,也不能从DOM中删除用户。
请参阅此帮助。

检查您的回调函数。逻辑似乎是正确的。我刚刚测试并替换select的html将删除旧项目并添加新项目。这是一个例子

在成功回调函数中添加几个console.log()调用。控制台日志(数据);log(userList);日志(listContent)并查看它们是否包含正确的数据。。。或者他们是否被处决


另一个可能的原因是检查服务器上的角色扮演者列表。它可能包含已删除的用户-即,如果您将其从缓存中而不是从数据库中拉出,或者在加载列表后确实删除了该用户。

您是否在代码中从组合框中删除过该选项?我返回到组合框的集合已删除该记录,因此我假设这样做。html([更新的集合])是否应使用更新的数据替换comobox元素?我错了吗?如果数据是从服务器正确发送的,我会错的。您是否将数据作为json编码的对象返回?是的,我返回json编码的anonnymouse类型。请参阅底部的modified OP。因此,没有办法真正绑定combobox,以便在返回JSON集合更改时对其进行更新?我必须使用[Combobox].remove()手动删除客户端上的Combobox元素?是的,当然有办法,但您应该使用一些框架,如backbone.js(还有其他框架,但这确实是最先进的)。通常,使用这种基于MVC(模型、视图、控制器)模型的javascript框架,您会有一个元素集合。从集合中删除元素时,它会自动刷新并重新呈现客户端(无需重新加载页面)。如果你想知道更多,我建议从这个链接开始
$("#comboBox option[value='USER-NAME']").remove();