我正在尝试使用Ajax填充DropDownList。我的代码如下。我已经完成了所有代码,一切正常,没有任何明显的C#或Jquery错误。在按钮上单击Jquery运行并调用我的WebMethod。在我的C#代码中命中GetLanguageList断点,并成功返回6个对象的列表。成功函数遍历6个对象中的每一个。但是,下拉列表仍为空。我没有使用更新面板。
我尝试将返回类型更改为ArrayItem的List和List。我尝试过使用AjaxControlToolkit ComboBox而不是DropDownList。我尝试过让DropDownList填充文档而不是单击按钮。我试图将Text和Value添加到DropDownList的DataText和DataValue属性中。
还有什么可能导致DropDownList不能填充?
我的方法
[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">
答案 0 :(得分:2)
尝试将成功功能更改为以下内容:
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']));
});
}