我在document.ready函数上用ajax帖子填充下拉列表,但我希望在cs页面上选择它的值,但它会向我返回空白值。请帮助..我的代码是
var mddlrole = $('#<%=ddlrole.ClientID %>');
document.ready(function() {
$.ajax({
type: "POST",
url: "ReportBasic.aspx/getroledata",
data: '{}',
contentType: "application/json;",
dataType: "json",
success: function(response) {
debugger;
xmlDoc = $.parseXML(response.d.toString()),
$xml = $(xmlDoc)
$xml.find('Table').each(function() {
var OptionValue = $(this).find('RoleID').text();
var OptionText = $(this).find('Name').text();
var option = new Option(OptionText, OptionValue);
$(option).html(OptionText);
$(mddlrole).append(option);
});
}
});
});
on.cs页面
string filterQuery = dlddlrole.SelectedItem.Value;
错误来自“对象引用未设置为对象的实例”
请帮忙。
答案 0 :(得分:1)
我们可以使用以下代码
选择此值Request.Form["ddlrole"].ToString()
答案 1 :(得分:0)
移动此行:
var mddlrole = $('#<%=ddlrole.ClientID %>');
dom load函数内部如下:
document.ready(function() {
var mddlrole = $('#<%=ddlrole.ClientID %>');
....
将变量赋值放在当前位置会为变量赋值null,因为dom在该点没有加载下拉列表。
要访问提交给您的代码的值,请使用Request.Form[ddlrole.UniqueID]
- 但请注意,每次回发时,您在客户端动态添加的选项都会消失(因为他们不在视图状态)。
我建议您应该将项目列表绑定到服务器端的下拉列表:您当前的方法会使您的生活变得不必要地复杂化(并且会为您的服务器创建额外的,可能不必要的往返)。