700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Ajax无刷新实现省市联动 并在回发后保留省市下拉框状态

Ajax无刷新实现省市联动 并在回发后保留省市下拉框状态

时间:2020-01-31 04:23:20

相关推荐

Ajax无刷新实现省市联动 并在回发后保留省市下拉框状态

功能说明:1、实现省市无刷新联动,并在回发后保留省市下拉框状态

2、使用jquery+AjaxPro实现,也可用xmlhttprequest+ashx实现,原理一样

前台代码:

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="/1999/xhtml">

<headrunat="server">

<title></title>

<scriptsrc="//Content/Script/jquery-1.4.1-vsdoc.js"type="text/javascript"></script>

<scripttype="text/javascript">

$(function(){

//【省份】-【城市】关系

$("#<%=ddlProvince.ClientID%>").change(function(){

varres=Views_JsAndJquery_Ajax_Common_TwoGrade.BindCity(this.value).value;

$("#<%=ddlCity.ClientID%>").empty().html(res);

$("#<%=hdCity.ClientID%>").val(res);

$("#<%=hdCitySelectedValue.ClientID%>").val('');

});

$("#<%=ddlCity.ClientID%>").change(function(){//保存城市下来选择值

$("#<%=hdCitySelectedValue.ClientID%>").val($("#<%=ddlCity.ClientID%>").val());

});

//页面加载时,恢复之前【城市】下拉框状态

if($("#<%=hdCity.ClientID%>").val()!=""){

if($("#<%=ddlProvince.ClientID%>").val()!=''){

$("#<%=ddlCity.ClientID%>").empty().html($("#<%=hdCity.ClientID%>").val());//重新加载【城市】数据

$("#<%=ddlCity.ClientID%>").val($("#<%=hdCitySelectedValue.ClientID%>").val());//恢复之前选择的值

}

else{//如果省份下拉框选择第一项则清空城市下拉框对应的隐藏值

$("#<%=hdCity.ClientID%>").val('');

$("#<%=hdCitySelectedValue.ClientID%>").val('');

}

}

});

</script>

</head>

<body>

<formid="form1"runat="server">

<%--存放省份所对应的城市信息--%>

<asp:HiddenFieldID="hdCity"runat="server"/>

<%--存放城市下拉框选择的值--%>

<asp:HiddenFieldID="hdCitySelectedValue"runat="server"/>

<div>

<asp:DropDownListID="ddlProvince"runat="server">

</asp:DropDownList>

<asp:DropDownListID="ddlCity"runat="server">

</asp:DropDownList>

<asp:ButtonID="Button1"runat="server"Text="Button"OnClick="Button1_Click"/>

</div>

</form>

</body>

</html>

后台代码:

publicpartialclassViews_JsAndJquery_Ajax_Common_TwoGrade:System.Web.UI.Page

{

protectedvoidPage_Load(objectsender,EventArgse)

{

AjaxPro.Utility.RegisterTypeForAjax(typeof(Views_JsAndJquery_Ajax_Common_TwoGrade));//每次回发都得重新注册

if(!IsPostBack)

{

BindProvince();

this.ddlCity.Items.Add("请选择");

}

}

privatevoidBindProvince()//绑定省份

{

this.ddlProvince.Items.Add(newListItem("请选择",string.Empty));

this.ddlProvince.Items.Add(newListItem("湖北","01"));

this.ddlProvince.Items.Add(newListItem("湖南","02"));

}

///<summary>

///绑定城市

///</summary>

///<returns></returns>

[AjaxPro.AjaxMethod]

publicstringBindCity(stringparProvinID)

{

StringBuilderst=newStringBuilder();

st.Append("<optionvalue=\""+string.Empty+"\">"+"请选择"+"</option>\n");

if(parProvinID!=string.Empty)

{

if(parProvinID=="01")

{

st.Append("<optionvalue=\"01\">武汉</option>\n");

st.Append("<optionvalue=\"02\">孝感</option>\n");

}

elseif(parProvinID=="02")

{

st.Append("<optionvalue=\"01\">长沙</option>\n");

st.Append("<optionvalue=\"02\">岳阳</option>\n");

}

}

returnst.ToString();

}

protectedvoidButton1_Click(objectsender,EventArgse)//获取下拉框值

{

stringstr=this.ddlProvince.SelectedValue;//省份下拉框

stringstr2=Request[this.ddlCity.UniqueID];//城市下拉框的seelctedvalue

stringstr3=this.hdCitySelectedValue.Value;//城市下拉框的seelctedvalue

}

}

会出现的异常信息(下面解决方法会影响安全,并不是最好的方法)

一、从客户端中检测到有潜在危险的Request.Form值

解决方法: <%@PageValidateRequest="false"

二、回发或回调参数无效。在配置中使用<pages enableEventValidation="true"/>

解决方法:<%@PageEnableEventValidation="false"

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。