一般,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程序来访问这个程序,我们就用jQuery吧。

   $.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相关推荐

  1. 关于Asp.Net开发中导入外部JavaScript文件的问题

    一直认为在html元素应用的时候,每个元素大都这样子(<hr />或者<script />)格式就对的,但今天就发现了,其实在不同的开发中是不一样的,这次遇到的就是导入外部Js ...

  2. asp.net开发中自定义网站的目录

    用asp.net做过几个项目,一直觉得有点儿不爽的地方,建立新的项目[asp.net]默认只能创建在c:\inetpub\wwwroot\目录下面! 几天发现只要你预先创建了相应的虚拟目录比如weba ...

  3. 在ASP.NET开发中一些单词的标准缩写

    有些词可能共用一些缩写.带星号的缩写或词来源于PeopleSoft标准. The following standard word abbreviations should be used in nam ...

  4. 分享.NET开发中经常使用到的代码片段 完全从实际项目中提取出来,也可被反反复复的重复借用...

    几年前,一篇<ASP.NET开发人员经常使用的三十三种代码>非常流行,它总结了一些经常在ASP.NET开发中使用到的代码,直接可以拿来使用.今天重读这篇文章,有感而发,善于总结也是进步,于 ...

  5. ASP.NET开发,简化与封装

    微软的ASP.NET的开发,就是面向对象的编程,当然前端也能体验至面向对象的话,使用Web控件也必须的. 任一控件,我们均可以在后端.aspx.cs或.aspx.vb程序中new一个对象出来. 很多场 ...

  6. java web开发常见问题_javaWeb开发中常见的问题

    1.修改表单提交的时候不好使可能是因为没写对应隐藏域的ID 2.el表达式在js代码中要加"",例如 "${}" 3.JavaScript中的函数也有重载的特性 ...

  7. Web网站开发中,Cookie是什么?

    你好,是我琉忆. 今天我们讲一讲什么是Cookie,怎么理解Cookie. 在我们Web开发中,例如要想长久的存储一个用户的信息,到底需要使用什么样的一个方式进行储存?我们一起来看看. 1.Cooki ...

  8. ASP.Net学习笔记004--基于ashx方式的ASP.Net开发1

    以前写的课程都没有附上源码,很抱歉! 课程中的源码可以加qq索要:1606841559 技术交流qq1群:251572072 技术交流qq2群:170933152 也可以自己下载: ASP.Net学习 ...

  9. ASP.net mvc开发中使用纯html如何创建FCKeditor编辑器的使用

    http://www.cnblogs.com/esshs/archive/2008/12/03/1346326.html FCKeditor下载路径: http://sourceforge.net/p ...

最新文章

  1. 西北工业大学21计算机考研,西北工业大学2018年计算机考研879专业综合考试大纲...
  2. vue拖动添加模块展示_一个全新的Vue拖拽特性实现:“移动”部分
  3. 系列(三)—Redis
  4. C---蝉、蜻蜓、蜘蛛
  5. oracle 实现 drop table if exists
  6. labview随机数序列_labview产生随机数
  7. Git 代码分支管理 / 版本管理
  8. 矩阵分析——第一章 线形空间和线性变换
  9. Math: Fibonacci
  10. 任何在aix下面看你的系统是32位还是64位的
  11. PHP可变变量($$)
  12. 软件基本功:linux/windows的头文件互相包含,大哥你这是什么创新?
  13. 联想g400从u盘启动计算机,【联想G40怎么从U盘启动】联想g40怎么设置u启动_联想g40从u盘启动...
  14. Unity接入心知天气,获取当前城市天气状况
  15. android 图片轮播组件,Android客户端实现图片轮播控件
  16. [死磕 Spring 21/43] --- IOC 之 Factory 实例化 bean
  17. 浅析提高倾斜摄影超大场景的三维模型轻量化的数据质量关键技术
  18. Octapharma Group公布强劲的2018年业绩
  19. 原始集体主义、威权集体主义和敏捷集体主义
  20. 达内C++视频(全)

热门文章

  1. 谨记2017年8月30日10:03:26
  2. Android Studio 2.3 Canary 3 版本发布
  3. WWDC 2014 Session笔记 - 可视化开发,IB 的新时代
  4. hadoop上lzop的安装
  5. [转]通过创建一个位图的XY Chart来学习Android绘图类Rect,Paint,Bitmap,Canvas(附源码)...
  6. 想建一个带分隔条的label 控件;
  7. python数据分析实战案例-Python数据分析案例实战
  8. linux 监控命令iostat,Linux下 IO实时监控iostat命令详解
  9. sap 分摊分配不产生会计凭证的原因_MM 物料凭证没有产生相应的会计凭证...
  10. java object monitor_Java精通并发-通过openjdk源码分析ObjectMonitor底层实现