Asp.net开发中甩掉.ashx .asmx
一般,asp.net中,提供ajax请求响应的处理,需要借助于一般处理程序(*.ashx)或web服务(*.asmx),并且每一个ajax请求,都要建一个这样的文件,如此一来,如果在一个项目中ajax程序多了,势必会产生一堆的.ashx或.asmx,虽然于程序本身无碍,但那一堆文件看上去总觉得有伤大雅。那么可不可以丢掉这些.ashx和.asmx,选择一种更简练的方式来做ajax程序呢。
答案是肯定的,那就是:WebMethod -- web service 。
首先在 aspx.cs文件里建一个公开的静态方法,然后加上WebMethod属性。
如:
[WebMethod]public static string GetUserName() {//......}如果要在这个方法里操作session,那 还得将WebMethod的EnableSession 属性设为true。即:
[WebMethod(EnableSession = true)]//或[WebMethod(true)]public static string GetUserName() {//......}
$.ajax({type: "POST",contentType: "application/json",url: "WebForm2.aspx/GetUserName",data: "{}",dataType: "json",success: function(){.......}});
这里对几个参数做一下简单的说 明,
type:请求的类型,这里必须用post 。WebMethod方法只接受post类型的请求。
contentType: 发送信息至服务器时内容编码类型。我们这里一定要用application/json 。
url:请求的服务器端处理程序的路径,格式为"文 件名(含后缀)/方法名"
data:参数列表。注意,这里的参数一定要是json格式的字符串,记住是字符串格式,如:" {aa:11,bb:22,cc:33,...}"。如果你写的不是字符串,那jquery会把它实序列化成字符串,那么在服务器端接受到的就不是json格式了,且不能为空,即使没有参数也要写成"{}",如上例。
很多人不成功,原因就在这里。
dataType:服务器返回的数据类型。必须是json,其他的都无效。因为 webservice是一json格式返回数据的,其形式为:{"d":"......."}。
success:请求成功后的回调函数。你 可以在这里对返回的数据做任意处理。
我们可以看到其中一些参数值是固定的,所以从复用性的角度考虑,我们可以给jquery做一个扩展,对上面的函数做一下简单的封装:
我们建一个脚本文件叫jquery.extend.js。在里面写一个叫ajaxWebService的方法(因为webmethod其实就是WebService嘛,故此方法对请求*.asmx也是有效的),代码如下:
///
/// jQuery原型扩展,重新封装Ajax请求WebServeice
///
///
/// 处理请求的地址
///
///
/// 参数,json格式的字符串
///
///
/// 请求成功后的回调函数
///
$.ajaxWebService = function(url, dataMap, fnSuccess) {$.ajax({type: "POST",contentType: "application/json",url: url,data: dataMap,dataType: "json",success: fnSuccess});
}
好了,这样我们请求webmethod方法 就可以这样写了:
$.ajaxWebService("WebForm2.aspx/GetUserName", "{}", function(result) {......});
最后:如果你的项目中ajax程序非常多(这种情况是可能存在的,我做过一个网站,是个sns,全程ajax,几乎每个操作都用了ajax),
你觉得把WebMethod方法写在各个aspx页面里很零散,那么你可以专门建一个页面(如:WebMethods.aspx)来存放。
Asp.net开发中甩掉.ashx .asmx相关推荐
- 关于Asp.Net开发中导入外部JavaScript文件的问题
一直认为在html元素应用的时候,每个元素大都这样子(<hr />或者<script />)格式就对的,但今天就发现了,其实在不同的开发中是不一样的,这次遇到的就是导入外部Js ...
- asp.net开发中自定义网站的目录
用asp.net做过几个项目,一直觉得有点儿不爽的地方,建立新的项目[asp.net]默认只能创建在c:\inetpub\wwwroot\目录下面! 几天发现只要你预先创建了相应的虚拟目录比如weba ...
- 在ASP.NET开发中一些单词的标准缩写
有些词可能共用一些缩写.带星号的缩写或词来源于PeopleSoft标准. The following standard word abbreviations should be used in nam ...
- 分享.NET开发中经常使用到的代码片段 完全从实际项目中提取出来,也可被反反复复的重复借用...
几年前,一篇<ASP.NET开发人员经常使用的三十三种代码>非常流行,它总结了一些经常在ASP.NET开发中使用到的代码,直接可以拿来使用.今天重读这篇文章,有感而发,善于总结也是进步,于 ...
- ASP.NET开发,简化与封装
微软的ASP.NET的开发,就是面向对象的编程,当然前端也能体验至面向对象的话,使用Web控件也必须的. 任一控件,我们均可以在后端.aspx.cs或.aspx.vb程序中new一个对象出来. 很多场 ...
- java web开发常见问题_javaWeb开发中常见的问题
1.修改表单提交的时候不好使可能是因为没写对应隐藏域的ID 2.el表达式在js代码中要加"",例如 "${}" 3.JavaScript中的函数也有重载的特性 ...
- Web网站开发中,Cookie是什么?
你好,是我琉忆. 今天我们讲一讲什么是Cookie,怎么理解Cookie. 在我们Web开发中,例如要想长久的存储一个用户的信息,到底需要使用什么样的一个方式进行储存?我们一起来看看. 1.Cooki ...
- ASP.Net学习笔记004--基于ashx方式的ASP.Net开发1
以前写的课程都没有附上源码,很抱歉! 课程中的源码可以加qq索要:1606841559 技术交流qq1群:251572072 技术交流qq2群:170933152 也可以自己下载: ASP.Net学习 ...
- ASP.net mvc开发中使用纯html如何创建FCKeditor编辑器的使用
http://www.cnblogs.com/esshs/archive/2008/12/03/1346326.html FCKeditor下载路径: http://sourceforge.net/p ...
最新文章
- 西北工业大学21计算机考研,西北工业大学2018年计算机考研879专业综合考试大纲...
- vue拖动添加模块展示_一个全新的Vue拖拽特性实现:“移动”部分
- 系列(三)—Redis
- C---蝉、蜻蜓、蜘蛛
- oracle 实现 drop table if exists
- labview随机数序列_labview产生随机数
- Git 代码分支管理 / 版本管理
- 矩阵分析——第一章 线形空间和线性变换
- Math: Fibonacci
- 任何在aix下面看你的系统是32位还是64位的
- PHP可变变量($$)
- 软件基本功:linux/windows的头文件互相包含,大哥你这是什么创新?
- 联想g400从u盘启动计算机,【联想G40怎么从U盘启动】联想g40怎么设置u启动_联想g40从u盘启动...
- Unity接入心知天气,获取当前城市天气状况
- android 图片轮播组件,Android客户端实现图片轮播控件
- [死磕 Spring 21/43] --- IOC 之 Factory 实例化 bean
- 浅析提高倾斜摄影超大场景的三维模型轻量化的数据质量关键技术
- Octapharma Group公布强劲的2018年业绩
- 原始集体主义、威权集体主义和敏捷集体主义
- 达内C++视频(全)
热门文章
- 谨记2017年8月30日10:03:26
- Android Studio 2.3 Canary 3 版本发布
- WWDC 2014 Session笔记 - 可视化开发,IB 的新时代
- hadoop上lzop的安装
- [转]通过创建一个位图的XY Chart来学习Android绘图类Rect,Paint,Bitmap,Canvas(附源码)...
- 想建一个带分隔条的label 控件;
- python数据分析实战案例-Python数据分析案例实战
- linux 监控命令iostat,Linux下 IO实时监控iostat命令详解
- sap 分摊分配不产生会计凭证的原因_MM 物料凭证没有产生相应的会计凭证...
- java object monitor_Java精通并发-通过openjdk源码分析ObjectMonitor底层实现