在以往我们在做ajax时,都要借助于一般处理程序(.ashx)或web服务(.asmx),并且每一个请求都要建一个这样的文件.这样建一大堆ashx文件,比较麻烦,多了看起来也不爽.
现在我们可以借助webMethod方法来使ajax实现起来更加简练
1,既然要用WebMethod,那肯定就少不了引用一下命名空间了
using System.Web.Services;
在这里,为方便开发,我新建了一个页面专门用于写WebMethod方法.那样会比较方便,也比较好管理. 如果ajax请求比较多,可以多建几个页面.根据页面的名称来作下请求的分类
例,下面贴出后台代码:
/// <summary>
/// 根据任务ID获取任务名称,任务完成状态,任务数量
/// </summary>
/// <param name="id">任务ID</param>
/// <returns></returns>
[WebMethod]public static string GetMissionInfoById(int id)
{
CommonService commonService = new CommonService();
DataTable table = commonService.GetSysMissionById(id);
//.....
return "false";
} 后台的这个WebMethod方法要求是公共的静态方法,方法上面注意要加上WeMethod属性;如果要在这个方法里面操作Session.就得在方法上加上属性
[WebMethod(EnableSession = true)]//或[WebMethod(true)]public static string GetMissionInfoById(int id)
{
CommonService commonService = new CommonService();
DataTable table = commonService.GetSysMissionById(id);
//.....
return "false";
} 2.既然后台的WebMethod方法都已经写好了.就差着调用了.这里就用JQuery吧.比较简练
$.ajax({
type: "POST",
contentType: "application/json",
url: "WebMethodAjax.aspx/GetMissionInfoById",
data: "{id:12}",
dataType: "json",
success: function()
{
//请求成功后的回调处理.
},
error:function()
{
//请求失败时的回调处理.
}
}); 这里对Jquery的Ajax几个参数做一下简单的说明,type:请求的类型,这里必须用post 。WebMethod方法只接受post类型的请求
contentType:发送信息至服务器时内容编码类型。我们这里一定要用application/json
url:请求的服务器端处理程序的路径,格式为”文件名(含后缀)/方法名”
data:参数列表。注意,这里的参数一定要是json格式的字符串,记住是字符串格式,如:”{aa:11,bb:22,cc:33 , …}”。
如果你写的不是字符串,那jquery会把它实序列化成字符串,那么在服务器端接受到的就不是json格式了,且不能为空,即使没有参数也要写成”{}”,如上例。很多人不成功,原因就在这里。










