无法使用Ajax填充下拉列表

Unable to Populate DropDownList using Ajax

本文关键字:填充 下拉列表 Ajax      更新时间:2023-09-26

我正在尝试使用Ajax填充下拉列表。我的代码如下。我已经遍历了所有的代码,一切正常,没有任何明显的c#或Jquery错误。在按钮上单击Jquery运行并调用我的WebMethod。在我的c#代码中,GetLanguageList断点被击中,6个对象的列表被成功返回。成功函数遍历6个对象中的每一个。但是,下拉列表仍然为空。我没有使用更新面板。

我试过将返回类型更改为数组和列表。我试过使用AjaxControlToolkit组合框而不是下拉列表。我试过只是有下拉列表填充上文档准备,而不是按钮点击。我将Text和Value添加到下拉列表的DataText和datvalue属性中。

还有什么可能导致下拉列表无法填充?

我的方法
    [WebMethod()]
    public static ArrayList GetLanguageList()
    {
        ArrayList lstArrLanguage = new ArrayList();
        lstArrLanguage.Add(new ListItem("C#", "C#"));
        lstArrLanguage.Add(new ListItem("Java", "Java"));
        lstArrLanguage.Add(new ListItem("PHP", "PHP"));
        lstArrLanguage.Add(new ListItem("VB.NET", "VB.NET"));
        lstArrLanguage.Add(new ListItem("JavaScript", "JavaScript"));
        lstArrLanguage.Add(new ListItem("jQuery", "jQuery"));
        return lstArrLanguage;
    }
我Jquery

    <script language="javascript" type="text/javascript">
         $(function() {
            $("#locationList").change(function () {
                TestMethod();
            }).change();
        });
        function TestMethod() {
            $.ajax({
                type: "POST",
                url: '<%= ResolveUrl("EmailEditor.aspx/GetLanguageList") %>',
                data: '',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    $("#DropDownList1").empty().append($("<option></option>").val("[-]").html("Please select"));
                    $.each(msg.d, function() {
                        $("#DropDownList1").append($("<option></option>").val(this['Value']).html(this['Text']));
                    });
                },
                error: function (xhr) {
                    alert(xhr.responseText);                      
                }
            });
        };
    </script> 
 <asp:Button ID="Button1" OnClientClick="TestMethod()" runat="server" Text="Button" />
 <asp:DropDownList ID="DropDownList1" runat="server">

尝试将success函数更改为以下内容:

success: function(msg) {
    $("#<%= DropDownList1.ClientID %>").empty().append($("<option></option>").val("[-]").html("Please select"));
    $.each(msg.d, function() {
       $("#<%= DropDownList1.ClientID %").append($("<option></option>").val(this['Value']).html(this['Text']));
    });
}