使用jquery ajax post填充下拉列表,并在c#页面上获取选定的值

时间:2014-08-28 09:17:11

标签: c# javascript jquery asp.net ajax

我在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;

错误来自“对象引用未设置为对象的实例”

请帮忙。

2 个答案:

答案 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] - 但请注意,每次回发时,您在客户端动态添加的选项都会消失(因为他们不在视图状态)。

我建议您应该将项目列表绑定到服务器端的下拉列表:您当前的方法会使您的生活变得不必要地复杂化(并且会为您的服务器创建额外的,可能不必要的往返)。