也许你会帮助我。因为我卡住了。我在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来学习原因。
谢谢。
答案 0 :(得分:0)
我不认为你应该使用ajax作为控制下拉列表,因为返回的值不包含在viewstate中。因此,在回发到sẻrver后,错误导致。你使用autopostback和updatepanel与下拉列表