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()方 ...
随机推荐
- IdentityServer4 登录使用数据库
业务场景: IdentityServer4 默认使用TestUser和UserStore,需要模拟和加载所有的用户数据,正式环境肯定不能这样实现,我们想从自己的数据库中读取用户信息,另外,因为 Ide ...
- caffe源码分析 vector<Blob<Dtype>*>& bottom
Blob:4个维度 n x c x h x w: bottom[0] .bottom[1]代表该层有几个输入. bottom[0]->count(): 输入中,元素的总维数(个数) bottom ...
- Android 开发笔记___textview_聊天室效果
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- CSS fliter
Filters主要是运用在图片上,以实现一些特效.(也能运用于video上),类似滤镜效果 img { -webkit-filter:grayscale(1); } gr ...
- SQL基本查询_多表查询(实验三)
SQL基本查询_多表查询(实验三) 题目要求(一) 针对emp.dept两表完成如下查询,并验证查询结果的正确性 使用显式内连接查询所有员工的信息,显示其编号.姓名.薪水.入职日期及部门名称: 使用隐 ...
- POI不同版本替换Word模板时的问题
一.问题描述 通过POI,把Word中的占位符替换为实际的值,以生成复杂结构的业务报告. 在POI 3.9上,功能正常.由于某些原因升级到POI 3.10.1后,项目组反馈说Word模板出错,无法生成 ...
- React + Node 单页应用「一」前端搭建
项目地址 预览地址 原文地址 记录最近做的一个 demo,前端使用 React,用 React Router 实现前端路由,Koa 2 搭建 API Server, 最后通过 Nginx 做请求转发. ...
- 应用在安卓和ios端APP的证件识别
移动端证件识别智能图文处理,是利用OCR识别技术,通过手机拍摄身份证图像或者从手机相册中加载证件图像,过滤身份证的背景底纹干扰,自动分析证件各文字进行字符切分.识别,最后将识别结果按姓名.地址.民族. ...
- NLP论文泛读之《教材在线评论的情感倾向性分析》
NLP论文泛读之<教材在线评论的情感倾向性分析> 本文借助细粒度情感分类技术, 对从网络上抓取大量计算机专业本科教材的评价文本进行情感极性 分析, 从而辅助商家和出版社改进教材的质量.制定 ...
- word,excel,ppt转Pdf,Pdf转Swf,通过flexpaper+swftools实现在线预览
其实这是我好几年前的项目,现在再用这种方式我也不建议了,毕竟未来flash慢慢会淘汰,此方式也是因为目测大部分人都装了flash,才这么做的,但是页面展示效果也不好.其实还是考虑收费的控件,毕竟收费的 ...