ASP.NET填充基于其他下拉选择选项AJAX的下拉列表

时间:2016-05-19 08:34:52

标签: jquery asp.net json ajax

也许你会帮助我。因为我卡住了。我在jquery / ajax中表现不佳。所以问题是Ajax没有得到服务器的答案。它应该是json数组。它说:无法加载资源:服务器响应状态为500(内部服务器错误)

我想要做的基本上是根据另一个选择的选项填充drodon。

C#:

protected String ajax_test(String value)
    {

        DropDownForTime.Items.Clear();
        List<String> timesarray = new List<String>();
        String CS = ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ConnectionString;
        using (SqlConnection con = new SqlConnection(CS))
        {
            SqlCommand cmd = new SqlCommand("SELECT Id from Movies WHERE Name='"+value+"'", con);
            con.Open();

            SqlDataReader reader = cmd.ExecuteReader();

            if (reader.Read())
            {
                /*int a = int.Parse(reader[0].ToString());
                selectTimes(a);*/

                int movieid = int.Parse(reader[0].ToString());

                SqlCommand cmd2 = new SqlCommand("SELECT Time from Time WHERE MovieID = '"+movieid+"'", con);
                SqlDataReader reader2 = cmd.ExecuteReader();
                while (reader2.Read())
                {
                    timesarray.Add(reader[0].ToString());
                }
            }

            var jsonSerialiser = new JavaScriptSerializer();
            String json = jsonSerialiser.Serialize(timesarray);

            return json;
        }
    }


<div class="form-group">
                <asp:Label ID="LabelForMovie" runat="server" Text="Select a movie"></asp:Label>
                <asp:DropDownList ID="DropDownForMovie" runat="server" CssClass="form-control"></asp:DropDownList>
            </div>

            <div class="form-group">
                <asp:Label ID="LabelForTime" runat="server" Text="Choose time"></asp:Label>
                <asp:DropDownList ID="DropDownForTime" runat="server" CssClass="form-control"></asp:DropDownList>
            </div>

的jquery / AJAX:

<script type="text/javascript">
        $(document).ready(function () {
            $("#DropDownForMovie").change(function () {

                var s = $("#DropDownForMovie").find(":selected").text();
                var n = $("#DropDownForTime");

                $.ajax({
                    type: "POST",
                    url: "UserHome.aspx/ajax_test",
                    data: { value: s },
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (e) {
                        var obj = e.parseJSON();

                        $.each(obj, function (index, value) {
                            n.append("<option>" + value.text() + "</option>");
                        });
                    }
                });
            });

        });
    </script>

可能不仅有一个错误,而且还有更多错误。也许你们中的一些人会表现出正确的方式。

P.S我知道我可以使用c#AutoPostBack和SelectedItemsIndexOnChange进行相同的操作,但我想使用ajax来学习原因。

谢谢。

1 个答案:

答案 0 :(得分:0)

我不认为你应该使用ajax作为控制下拉列表,因为返回的值不包含在viewstate中。因此,在回发到sẻrver后,错误导致。你使用autopostback和updatepanel与下拉列表