从使用 AJAX 填充的下拉列表中获取值

Posted

技术标签:

【中文标题】从使用 AJAX 填充的下拉列表中获取值【英文标题】:Getting value from a dropdown list that was populated with AJAX 【发布时间】:2013-01-10 09:08:11 【问题描述】:

我已经使用 AJAX 填充了一个 ASP.net 下拉列表,现在我需要将 Id 以 C# 方法存储到数据库中,(我正在使用 LINQ)

这是我的网络方法

[WebMethod]
public static ArrayList GetLanguageList()

    ArrayList lstArrLanguage = new ArrayList();
     IQueryable<Common.Town> myList = new SupplierBL().GetTowns();
     foreach(Common.Town t in myList)
    
        string name = t.Name;
        string id = t.TownId.ToString();
        lstArrLanguage.Add(new ListItem(name, id));
    

    return lstArrLanguage;

我的 test.aspx 代码

<script language="javascript" type="text/javascript">
    $(document).ready(function () 
        $.ajax(
            type: "POST",
            url: "test.aspx/GetLanguageList",
            data: '',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) 
                $("#ddlLanguage").empty().append($("<option></option>").val("[-]").html("Please select"));
                $.each(msg.d, function () 
                     $('#<%=ddlLanguage.ClientID%>').append($("<option></option>").val(this['Value']).html(this['Text']));
                );
            ,
            error: function () 
                alert("An error has occurred during processing your request.");
            
        );
    );
</script>

【问题讨论】:

Eliza,GetLanguageList() 方法,您从哪里调用该方法,您是基于单击按钮执行该操作还是在 DDL 中形成 SelectedItem ..?你能显示相关代码..吗?还有什么是 Common.Town? 使用网页中的 AJax 当您加载 DropDown 列表值时,它是否有名称,列表中的 Id..?如果是这样,现在您需要根据所选项目获取 ID.. 从所选项目中,您可以执行 Split(',') 并获取数组 [1] 值,如果我对您的理解不正确,请纠正我 Eliza 我知道我需要获取哪些数据,但是当我尝试 string text = ddlDropDown.SelectedValue.ToString() in 时,我不知道将其输入 ac# 方法给我一个错误 Invalid回发或回调参数 你在做任何if(!IsPostBack) 检查..?您实际上可以执行类似var value = Request.Form[ddlLanguage.UniqueID]; 的操作,它将获得选择存储在服务器而不是客户端上的值。 【参考方案1】:

如果您在javaScript 中添加选项,则无法从DropDownList 中获取选定值。您可以尝试以下方法

string selectedValue = Request.Form[ddlLanguage.UniqueID];

这个question 也可能有用。

【讨论】:

【参考方案2】:

如果您通过 ajax 填充下拉列表的值,则它无法在服务器端使用,因为在 ajax 请求期间页面不会回发。

为了在 C# 中获取下拉列表的值,请使用以下 sn-ps :

String _value = Convert.ToString(Request[ddlLanguage.ClientID]);

希望这会有所帮助!

【讨论】:

不,仍然给我错误 Invalid postback or callback argument

以上是关于从使用 AJAX 填充的下拉列表中获取值的主要内容,如果未能解决你的问题,请参考以下文章

jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表

在 laravel 中使用 ajax 用数据库填充下拉列表

Laravel-从下拉列表中选择值后自动填充输入

使用ajax根据选择值获取div的数据

如何根据使用 jQuery/AJAX 和 PHP/MySQL 选择的第一个下拉列表填充第二个下拉列表?

如何获取 Select2 下拉列表中的所有值?