Asp.Net下,基于Jquery的Ajax二级联动
最近做一个项目,要求实现二级联动效果。背景为:通过学院的选择,联动出专业选项。起初想直接用微软的控件实现Ajax效果,但是DropDownList控件会自动触发PostBack,在后台根本就不好控制,所以抛弃这种方案,用Jquery实现Ajax效果。直接上代码,简单直观。
1.前端页面(这里给出页面二级联动示意,分别为两个select)
<select name="xsxy" id="xsxy">
<option>-- 请选择学院名称 --</option>
</select>
<select name="xszy" id="xszy">
<option>-- 请选择专业名称 --</option>
</select>
2.所对应Jquery代码
$(function () {
//ajax加载 注意路径,专业的post参数和学院有所不同,注意
$.post("../../handler/XyZyHandler.ashx", { "action": "getxydata" }, function (data, status) {
if (status != "success") {
$("#xsxy").append("<option>加载学院出错</option>");
}
else if (data == "nodata") {
$("#xsxy").append("<option>暂时没有数据</option>");
}
else {
var options = $.parseJSON(data);
for (var i = 0; i < options.length; i++) {
var option = options[i];
$("#xsxy").append("<option value='" + option.opvalue + "'>" + option.optext + "</option>"); //注意这里的option写法
}
}
});
//当学院改变时,实现专业的联动
$("#xsxy").change(function () {
$.post("../../handler/XyZyHandler.ashx", { "action": "getzydata", "xyid": $(this).val() }, function (data, status) {
if (status != "success") {
$("#xszy").append("<option>加载专业出错</option>");
}
else if (data == "nodata") {
$("#xszy").append("<option>暂时没有数据</option>");
}
else {
$("#xszy").empty();
$("#xszy").append("<option>-- 请选择专业名称 --</option>")
var options = $.parseJSON(data);
for (var i = 0; i < options.length; i++) {
var option = options[i];
$("#xszy").append("<option value='" + option.opvalue + "'>" + option.optext + "</option>");
}
}
});
});
3.其对应的ashx文件
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string action = context.Request["action"];
Xyzygl xzgl = new Xyzygl();
//处理学院
if (action == "getxydata")
{
DataTable result = xzgl.Xyzygl_Getxy();
)
{
context.Response.Write("nodata");
}
else
{
List<OptionContent> list = new List<OptionContent>();
; i < result.Rows.Count; i++)
{
string xymc = result.Rows[i]["xymc"].ToString();
string xyid = result.Rows[i]["xyid"].ToString();
list.Add(new OptionContent() { opvalue = xyid, optext = xymc });
}
//这里利用json处理更加的灵活,注意在添加数据的时候要以对象的方式,并且以属性的方式表示数据,这样前台在利用数据时就会更简单
JavaScriptSerializer jss = new JavaScriptSerializer();
context.Response.Write(jss.Serialize(list));
}
}
else if (action == "getzydata")
{
string xyid = context.Request["xyid"];
DataTable result = xzgl.Xyzygl_Getzy(xyid);
)
{
context.Response.Write("nodata");
}
else
{
List<OptionContent> list = new List<OptionContent>();
; i < result.Rows.Count; i++)
{
string zymc = result.Rows[i]["zymc"].ToString();
string zyid = result.Rows[i]["zyid"].ToString();
list.Add(new OptionContent() { opvalue = zyid, optext = zymc });
}
JavaScriptSerializer jss = new JavaScriptSerializer();
context.Response.Write(jss.Serialize(list));
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
public class OptionContent
{
public string opvalue { get; set; }
public string optext { get; set; }
}
}
说明:
1.这里将学院和专业的处理文件写在一个中,通过post的参数进行判断进行相应处理。
2.将数据结果进行json化,并且将数据结果进行对象的封装,使处理数据时更加的灵活。
3.对象的创建,直接给出属性,偷了懒,其实可以用参数构建对象,然后给出Set和Get方法。
4.前台的取值,通过json进行获取,注意看代码。
5.学院和专业值从数据库中取得,具体细节,这里没有给出,但是读者应该可以了解。
6.$.post中的参数,最好和ashx对应查看
Asp.Net下,基于Jquery的Ajax二级联动的更多相关文章
- 份-城市,基于jQuery的AJAX二级联动,用Struts2整合AJAX【非数据库版】
package loaderman.provincecity; import java.io.IOException; import java.util.LinkedHashSet; import j ...
- 源码来袭!!!基于jquery的ajax分页插件(demo+源码)
前几天打开自己的博客园主页,无意间发现自己的园龄竟然有4年之久了.可是看自己的博客列表却是空空如也,其实之前也有写过,但是一直没发布(然而好像并没有什么卵用).刚开始学习编程时就接触到博客园,且在博客 ...
- 基于jQuery的ajax对WebApi和OData的封装
基于jQuery的ajax对WebApi和OData的封装 WebApi 的使用带来了一个显著的特点,对type有一定的要求.一般ajax的type无非就是两种,GET和POST.如果用JSONP来跨 ...
- asp.net DropDownList无刷新ajax二级联动实现详细过程
只适合新手制作DropDownList无刷新ajax二级联动效果: 数据库实现,添加两表如图:表1,pingpai,表2,type,具体数据库实现看自己的理解: //页面主要代码: <asp:S ...
- Python Django 之 基于JQUERY的AJAX 登录页面
一.基于Jquery的Ajax的实现 1.url 2.vews 3.templates
- 基于JS的ajax的实现,JSON和JSONP,基于JQuery的ajax的实现
基于JS的ajax的实现,JSON和JSONP,基于JQuery的ajax的实现1.基于JS的ajax的实现 step1: var xmlhttp = XMLHttprequest() #实例化一个对 ...
- Json 基于jQuery+JSON的省市联动效果
helloweba.com 作者:月光光 时间:2012-09-12 21:57 标签: jQuery JSON Ajax 省市联动 省市区联动下拉效果在WEB中应用非常广泛,尤其在一些 ...
- 在asp.net中使JQuery的Ajax用总结
自从有了JQuery,Ajax的使用变的越来越方便了,但是使用中还是会或多或少的出现一些让人短时间内痛苦的问题.本文暂时总结一些在使用JQuery Ajax中应该注意的问题,如有不恰当或者不完善的地方 ...
- 基于jQuery的ajax系列之用FormData实现页面无刷新上传
接着上一篇ajax系列之用jQuery的ajax方法向服务器发出get和post请求写,这篇主要写如何利用ajax和FormData实现页面无刷新的文件上传效果,主要用到了jQuery的ajax()方 ...
随机推荐
- Java:什么是面向对象?
1.首先我们去区分对象的属性和方法. 一).什么是对象? 比如:所有的东西都可以叫做对象.而对象就是提供给我们研究对象,这就是对象. 二).怎么区分"属性"和"方法&qu ...
- canvas图形编辑器
原文地址:http://jeffzhong.space/2017/11/02/drawboard/ 使用canvas进行开发项目,我们离不开各种线段,曲线,图形,但每次都必须用代码一步一步的实现.有没 ...
- 解决Android下元素滑动问题
移动端左右.上下滑动: 当页面中既需要页面滑动操作,又需要上下或左右滑动页面上的某个元素时,直接使用zepto中提供的swipe事件是不能直接达到目的的,原因如下: (1)在Android低端机上to ...
- Apache降权和禁用PHP危险函数
测试环境: Windows Server 2003 + phpstudy 首先在win2003里运行phpstudy,这里注意需要选择应用系统服务模式,应用之后重启phpstudy. 打开系统服务(开 ...
- EF动态拼接查询
1.业务中遇到个问题,需要查询如某表的id为1或者2或者3,这里是根据传递参数获取如:传递1,2或者1,3或者1,2,3这里在sql中很好拼接如下: or id= or name=3//3代表另一个字 ...
- Python 解LeetCode:671. Second Minimum Node In a Binary Tree
题目在这里,要求一个二叉树的倒数第二个小的值.二叉树的特点是父节点的值会小于子节点的值,父节点要么没有子节点,要不左右孩子节点都有. 分析一下,根据定义,跟节点的值肯定是二叉树中最小的值,剩下的只需要 ...
- Java实现邮箱发送验证码
第一步,导入JAR包,JAR包下载地址[http://pan.baidu.com/s/1kVRvGyF] 正式代码: 首先书写一个工具类: MailUtil import javax.mail.*; ...
- centos7安装python3和Django后,ModuleNotFoundError: No module named '_sqlite3'
1.准备安装环境 yum groupinstall 'Development Tools' yum install zlib-devel bzip2-devel openssl-devel ncurs ...
- Win32 SDK 编程开始, 创建窗口, 消息的处理, 消息循环
Windows SDK 编程的一般步骤为: 1. 注册窗口类, 使用到的结构 WNDCLASSEX, 函数 RegisterClassEx. 2. 创建窗口, 函数 CreateWindowEx. 3 ...
- 使用duilib开发简单的Window安装包
一.具体思路 安装过程:安装包的制作包括资源文件的打包,资源文件打包到安装包exe中,安装的时候需要从exe中提取出对应的资源文件, 然后解压文件安装到指定目录,然后就是对安装的可执行程序进行注册表的 ...