WebForm使用JQuery实现DropDownList无刷新联动
原来用的微软封装的Ajax控件UpdatePannel和ScriptManager去实现无刷新联动,但一直出现意料之外的现象导致不正常联动。单独的做demo就没事,放到系统中就出问题,经过调试之后仍然不解。条条大路通罗马,还不信能被憋死了。众所周知,JQuery封装了Ajax,调用起来比原生的Ajax要好用的多,实现异步刷新当然也更一些了,虽然功能简单,直接看代码:
1. JS代码:
- <span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:14px;"> <script type="text/javascript" language="javascript">
- $(function () {
- //利用dropdownlist的change事件
- $("#hbKeyWordsType").change(function () {
- //获取关键字类型
- var keyType = $("#hbKeyWordsType").val();
- $.ajax({
- url: "WxKeywords_WxMessageFunOperation.aspx/hbKeyWordsType_SelectedIndexChanged", //调用后台方法:页面/方法名
- type: "post",
- data: "{typeCode:" + keyType + "}", //给后台传递数据,参数名必须跟方法的参数名一致
- contentType: "application/json;charset=uft-8",
- success: function (dataJson) {
- $("#hbKeysName").empty(); //清除关键字下拉框中原来存在的数据
- var strNames = eval(dataJson.d); //必须加.d,否则无法解析。不太清除原因,通过调试发现存在,但代码中智能提示中却没有d
- for (var i = 0; i < strNames.length; i++) {
- $("#hbKeysName").append($("<option value='" + strNames[i].Code + "'>" + strNames[i].Keywords + "</option>")); //这个添加关键字
- }
- },
- Error: function () {
- alert("服务器错误,请联系管理员!");
- }
- });
- });
- });
- </script>
- </span></span>
2. 页面相关控件(用的是平台封装的控件,普通DropDownList也可以)
- <span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:14px;"><td class="fieldtitle">
- 关键字类型
- </td>
- <td class="fieldvalue">
- <SOA:HBDropDownList runat="server" ID="hbKeyWordsType" />
- </td>
- <td class="fieldtitle">
- 关键字名称
- </td>
- <td class="fieldvalue">
- <SOA:HBDropDownList runat="server" ID="hbKeysName" />
- </td></span></span>
3. 后台C#代码
- <span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:14px;"> [WebMethod] //用于前台Jquery的调用
- public static string hbKeyWordsType_SelectedIndexChanged(string typeCode)
- {
- //根据选取的关键字类型和公共号编码查找关键字实体集合
- string accountCode = WxMessageAdapter.Instance.GetCurrentWxAccountCode();
- int keyWordsType =int.Parse(typeCode);
- WxKeywordsCollection wxKeyColl = WxKeywords_WxMessageAdapter.Instance.LoadByAccAndKeyType(accountCode, keyWordsType);
- //使用封装好的JSON序列化的方法返回Json串
- string reutnJson=JSONSerializerExecute.Serialize(wxKeyColl);
- return reutnJson;
- }
- </span></span>
注意事项:
1. 前台页面: ①url:"本页面名称/方法名称"; ②必须添加contentType:"application/json;charset=utf-8"; ③dataJson.d通过.d属性来取服务端返回的数据
2. 后台方法: ①方法由[WebMethod]修饰; ②方法必须是公共且静态的方法; ③方法里的参数名称必须与脚本里data的参数名一样,顺序可以不一样
之前dataJson没有添加.d,一直取不到后台返回来的数据,通过调试之后发现其实已经返回来了,只不过是data.d的形式,如下图:
从上图可以看出,dataJson是一个对象,而Eval函数是只能解析字符串的,导致一直取不到值。做这个功能花费了很长时间,虽然最终做出来了,也没多少欣慰,工作中的任务可是不等人的。但,万事开头难,只要上手了,一切都会好起来。
WebForm使用JQuery实现DropDownList无刷新联动的更多相关文章
- asp.net DropDownList无刷新ajax二级联动实现详细过程
只适合新手制作DropDownList无刷新ajax二级联动效果: 数据库实现,添加两表如图:表1,pingpai,表2,type,具体数据库实现看自己的理解: //页面主要代码: <asp:S ...
- JQuery 实现页面无刷新
对于JQuery实现页面无刷新的效果,即:应用这个JQuery这个组件,可以实现在页面上加载数据库中的数据信息,但是并没有给用户页面刷新的感觉,这样既可以有效的进行数据交互,也可以不妨碍用户的其他操作 ...
- JQuery中国省市区无刷新三级联动查询
之前有写过用<Ajax控件来实现中国的省市区无刷新查询> 今天用JQuery来实现,用Ajax控件和JQuery的优缺点就先不说了. 效果图如下: 下面来结合代码来详细说明一下如何用JQu ...
- jQuery AJAX 网页无刷新上传示例
新年礼,提供简单.易套用的 jQuery AJAX 上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 ...
- [Asp.net mvc]jquery.form.js无刷新上传
写在前面 最近在自己的网盘项目中想用ajax.beginform的方式做无刷新的操作,提交表单什么的都可以,但针对文件上传,就是个鸡肋.在网上查找了发现很多人都遇到了这个问题,大部分都推荐使用jque ...
- jquery ajax php 无刷新上传文件 带 遮罩 进度条 效果的哟
在很多项目中都会叫用户上传东西这些的,自从接触了jquery 和ajax之后就不管做什么,首先都会想到这个,我这个人呢?是比较重视客户体验的,这次我这边负责的是后台板块,然后就有一块是要求用户上传照片 ...
- repeater绑定dropdownlist,jquery+ajax页面无刷新,修改dropdownlist默认值
html代码: <td> <asp:HiddenField ID="hiddenchuli" Value='< ...
- jQuery Ajax实现下拉框无刷新联动
HTML代码: @{ Layout = null; } @using DAL; @using System.Data; @{ AreaDal areaDal = new AreaDal(); stri ...
- jQuery Pjax – 页面无刷新加载,优化用户体验
pjax 是 HTML5 pushState 以及 Ajax 两项技术的简称,综合这两个技术可以实现在不刷新页面的情况下载入 HTML 到当前网页,带给你超快速的浏览器体验,而且有固定链接.标题以及后 ...
随机推荐
- vue.js原生组件化开发(一)——组件开发基础
前言 vue作为一个轻量级前端框架,其核心就是组件化开发.我们一般常用的是用脚手架vue-cli来进行开发和管理,一个个组件即为一个个vue页面,这种叫单文件组件.我们在引用组件之时只需将组件页面引入 ...
- OpenSUSE42.3 leap 软件源设置
一.OpenSUSE软件源介绍: 1.默认已经加入了官方的软件源,不过我们自己也可以根据需要添加很多非官方软件源,添加软件源时要注意: 非官方源可能包含一些试验中的不稳定的软件包 不同的软件源之 ...
- Vue官方文档中的camelCased (驼峰式) 命名与 kebab-case
因为html特性中 元素的 prop是不区分大小写的 所以不管html中怎么大写小写变化,下面的组件的prop应该写成小写 Vue中有这样一种设定: props中如果使用为kebab-case命名方式 ...
- 今日SGU 5.19
SGU 142 题意:给你一个长度为n的串(由a,b组成),让你找出一个串不是n的子串,长度最下 收获:思维题,思路在代码里 #include<bits/stdc++.h> #define ...
- 基于Pipe的PureMVC FLEX框架的多核共享消息技术
pipes utilities,也就是所谓的通道(管道),为什么要使用通道呢?模块的结构都是一个单独的puremvc结构,模块和模块,shell和模块之间的通信 不能使用puremvc中的消息进行,因 ...
- SQL脚本存在TABLE ACCESS FULL行为
对于SQL的执行计划,一般尽量避免TABLE ACCESS FULL的出现,那怎样去定位,系统里面哪些SQL脚本存在TABLE ACCESS FULL行为,对于9i及以后版本,使用以下语句即可 sel ...
- 洛谷 P2080 增进感情
P2080 增进感情 题目背景 小明和小红的感情,是慢慢发展起来的. 题目描述 他们对对方分别有一个好感值.定义两人的亲密程度为两人的好感值之和. 如果他们的亲密程度达到V,则他们将走到一起.他们以后 ...
- 利用gradle加入构建版本
在java的程序中,貌似都没有这个构建版本的概念.用的诸如eclipse. idea和android studio的IDE也没有直接提供构建版本的选项.只是我却想在android程序的版本其中加入一个 ...
- OpenCASCADE 麻花钻头造型实例分析
OpenCASCADE 麻花钻头造型实例分析 eryar@163.com Abstract. OpenCASCADE provides a simple twist drill bit modelin ...
- javap 命令 反编译代码
javap 命令 javap -c classname 一个好的分析class二进制文件的 链接 http://blog.csdn.net/pwlazy/article/details/7954169