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函数是只能解析字符串的,导致一直取不到值。做这个功能花费了很长时间,虽然最终做出来了,也没多少欣慰,工作中的任务可是不等人的。但,万事开头难,只要上手了,一切都会好起来。

时间: 2024-12-19 11:17:40

WebForm使用JQuery实现DropDownList无刷新联动的相关文章

JQuery 实现页面无刷新

对于JQuery实现页面无刷新的效果,即:应用这个JQuery这个组件,可以实现在页面上加载数据库中的数据信息,但是并没有给用户页面刷新的感觉,这样既可以有效的进行数据交互,也可以不妨碍用户的其他操作.(http://itred.cnblogs.com    itRed: [email protected]) 在用JQuery实现页面无刷新的效果之前,我们需要掌握和了解一些基础知识,以方便我们在进行代码编写时更加的得心应手. 一.异步技术 浏览器预设是使用同步的方式发出请求并等待回应,为了处理浏

jQuery单页无刷新关键词查找功能

jQuery广告代码单页无刷新关键词查找功能是一款直接在数据库内查找内容,并且滑动跳转到指定的内容上,用来增加用户体验是个不错的效果. 来源:http://www.huiyi8.com/jiaoben/ jQuery单页无刷新关键词查找功能

Struts2+Jquery+实现Ajax无刷新验证用户名是否存在

小弟之前一直搞不明白Struts2+Jquery+实现Ajax无刷新验证用户名该怎么弄,后来经过努力,终于搞定了,应注意struts配置文件的内容,好了直接上代码了 页面代码 <body> <s:form action="registAction" method="post" namespace="/user"> <table> <tr> <td>UserName</td>

用jquery写一个无刷新评论功能

<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="Jquery/jquery-1.10.2.js" type="text/javascript"></script> <script type="text/javascript&quo

jQuery实现的无刷新分页演示效果

<!DOCTYPE html> <head> <FCK:meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery实现的无刷新分页演示效果丨亿诚-潜水曝气机</title> <script type="text/javascript" src="/images/jqu

jQuery 单页无刷新插件

现在很多网站都使用了单页无刷新效果,这里自己也封装了一个类似 PJAX 的jquery插件(支持浏览器前进后退按钮及url地址更改不跳转),方便以后在项目中应用或参考,在测试的时候注意自己的本地路径,这里采用了ajax所以不能直接点击打开,必须得在本地服务器下执行: 文件目录: index.html 为首页展示页: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8

jQuery AJAX 网页无刷新上传示例

新年礼,提供简单.易套用的 jQuery AJAX 上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 (不论是否 ASP.NET),内附的 FileUpload 控件,功能不足 (页面必须刷新.不支援 AJAX),或外观太丑被用户嫌弃 (却无法透过 CSS 自定义外观).网路上虽已有许多可用的示例,如: jQuery File Upload,但功能太强大.外观复杂,欲仅取出部分功能来引用,反而不易

struts2+jquery 实现ajax无刷新更新数据

前几天为了实现一个struts 的 ajax无刷新更新数据的例子,发现网上资料很少,很多已经过时或者链接都失效了 不过整合他们的资料,加上自己的研究,终于实现了效果 要求:1.各个学院提交学生数据到服务器,要求ajax 无刷新更新数据, 2.服务器端返回"更新成功"的提示窗口: 3.之后,使用jquery 更新input输入框的value值,为实现jquery 打印页面局部数据做准备. 此处使用struts2的第二种方法,(修改struts 配置文件,增加ajax package 的方

[Asp.net mvc]jquery.form.js无刷新上传

写在前面 最近在自己的网盘项目中想用ajax.beginform的方式做无刷新的操作,提交表单什么的都可以,但针对文件上传,就是个鸡肋.在网上查找了发现很多人都遇到了这个问题,大部分都推荐使用jquery.form.js的插件实现. demo 首先通过nuget安装插件jquery.form.js 引入js文件 <script src="~/Scripts/jquery.form.min.js"></script> 前端调用的代码 @{ ViewBag.Titl