甩掉ashx和asmx使用jQuery.ajaxWebService请求WebMethod简练处理Ajax_AJAX相关

在WebForm下 开发ajax程序,需要借助于一般处理程序(*.ashx)或web服务(*.asmx),并且每一个ajax请求,都要建一个这样的文件,如此一来,如果在一个项目中ajax程序多了,势必会产生一堆的.ashx或.asmx,虽然于程序本身无碍,但那一堆文件看上去总觉得有伤大雅。那么可不可以丢掉这些.ashx和.asmx,选择一种更简练的方式来做ajax程序呢。

答案是肯定的,那就是:WebMethod 。(此方法是在.net3.5版本下调试的,在.net2.0下有问题)

首先在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也是有效的),代码如下:

/// <summary>
/// jQuery原型扩展,重新封装Ajax请求WebServeice
/// </summary>
/// <param name="url" type="String">
/// 处理请求的地址
///</param>
/// <param name="dataMap" type="String">
/// 参数,json格式的字符串
///</param>
/// <param name="fnSuccess" type="Function">
/// 请求成功后的回调函数
///</param>
$.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)来存放。

以上所述是小编给大家介绍的甩掉ashx和asmx使用jQuery.ajaxWebService请求WebMethod简练处理Ajax,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jquery
, ajax
, webservice
, ashx
asmx
ashx webservice、ashx和webservice、ashx与webservice区别、ashx webmethod、webservice webmethod,以便于您获取更多的相关知识。

时间: 2024-08-21 01:34:42

甩掉ashx和asmx使用jQuery.ajaxWebService请求WebMethod简练处理Ajax_AJAX相关的相关文章

浅析jQuery Ajax请求参数和返回数据的处理_jquery

刚接触学会用jQuery ajax的时候,觉得真东西好神奇,这样就可以把数据取回来了啊.然后我可以把取回来的数据渲染到页面上,一颗赛艇. 之前很早接触到项目,并不知道怎么优雅的去用jquery ajax(现在也不优雅): 那个时候看别人写的代码 有 $.post("","",...) 也有 $.get("","",...) 还有 $.ajax() 当然现在知道点,这些写法都是一个意思,还是习惯用 $.ajax() 写写吧. 之

扩展JQuery Ajax请求错误机制,实现服务器端消息回馈

JQuery使我们在开发Ajax应用程序的时候提高了效率,减少了许多兼容性问题,但时间久了,也让我 们离不开他.比如简单的Jquery Ajax请求的封装让我们忘却了最原始的XmlHttpRequest对象和他的属性, 方法,也让我们远离事情的真相. 在Ajax项目中,经常遇到需要服务器端返回错误的消息提示,或者消息码之类的数据.查过一些帮助 ,解决方案,很多网站是返回错误的消息JSON数据或者脚本,这种方式当我们用JQuery.ajax()的时候出 现了问题,jquery.ajax()回调函数

web前端- 关于jquery post请求服务器问题

问题描述 关于jquery post请求服务器问题 一个按钮有个点击事件,这个点击事件是 访问服务器的,怎样把这个访问已post形式提交. 其中 jquery API 的post提交例子是这样子的: $.post("test.cgi", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); }); 这样子可以访问到服务器,但是

jquery ajax 请求一直返回当前页面HTML代码

问题描述 jquery ajax 请求一直返回当前页面HTML代码 前端JS var names =$(""#names"").val(); if(isNull(names)){ alertMsg({'msg':'请输入姓名!'}); return; } var job_number =$(""#job_number"").val(); if(isNull(job_number)){ alertMsg({'msg':'请输入工

jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签_jquery

废话不多说了,直接给大家贴代码了,具体内容如下所示: // js <script type="text/javascript"> function myBtn_f() { var cnt = $('#myCnt').val(); syncAjax('myAjax.html', { 'cnt' : cnt }, function(result) { if (100 == result.statusCode) { var data = result.lst; var $d =

Jquery ajax请求导出Excel表格的实现代码_jquery

直接贴代码吧 $("#btn-export").click(function(){ var exportExcel = "export_excel"; dataParams[exportExcel] = 1; var params = $.param(dataParams); var url = host+"&"+params; $('<form method="post" action="' + ur

jquery ajax请求方式与提示用户正在处理请稍等_jquery

初次使用$.ajax() ,我没有去区分过ajax的异步请求和同步请求的不同,刚开始使用同步请求,以至后来出现许多问题,特别在体验度方面.异步和同步:同步意味着执行完一段程序才能执行下一段,它属于阻塞模式,其表现在网页上的现象是--浏览器会锁定页面(即所谓的页面假死状态),用户不能操作其它的,必须等待当前请求返回数据.而使用异步方式请求,页面不会出现假死现象.提升用户体验度:当用户提交数据等待页面返回结果是需要时间的,有时这段等待时间比较长,为了提高用户体验度,我们通常会给出 "正在处理,请稍等

php-PHP的jQuery异步请求问题!

问题描述 PHP的jQuery异步请求问题! 这是json.html <br> function _GetData()<br> {<br> var sid=$("#sid").val(); //jQ获取用户输入的值<br> $.ajax(<br> {<br> type:"POST",<br> url:"json.php",<br> data:{&quo

asp.net Jquery+ajax请求data显示在GridView

这是一款简单的实用的jquery+ajax请求data显示在gridview的asp教程.net程序哦,下面我们来看看关于如何让ajax返回的值显示在asp.net教程 data显示在gridview上吧. aspx文件 protected void page_load(object sender, eventargs e) { if (request["id"] != null) { sqlconnection conn=null; sqlcommand cmd = null; sq