1.jquery.ajax请求aspx
请求aspx的静态方法要注意一下问题:
(1)aspx的后台方法必须静态,而且添加webmethod特性
(2)在ajax方法中contentType必须是“application/json”,
(3)data传递的数据必须是严格的json数据,如"{'a':'aa','b':'bb'}",而且参数必须和静态方法的参数一 一对应
(4)aspx的后台方法返回的数据默认形式是“{'d':'返回的内容'}”,所以如果dataType指定为"json"必须通过data.d来获取返回数据
在webfrom页面中后台定义请求方法(方法必须静态,而且必须添加WebMethod特性)
[WebMethod]
public static string GetString(string str_a,string str_b)
{
return str_a+str_b;
}
前台页面请求
$(function(){
$.jax({
url:'default.aspx/GetString',
type:'post',
contentType:'application/json',//这里必须指明要传递到服务器的内容的编码方式,而且必须是json,否则后台方法获取不到传递数据。
dataType:'json',//客户端以json的方式去读取返回数据
data:'{'str_a':'aaa','str_b':'bbbb'}',//参数必须和后台的参数名称一样 data必须传递json格式的数据
success:function(result){
alert(result.d);//因为webmethod的方法默认返回的数据格式是json的格式而且数据格式如:"{'d':'返回的数据'}",所以要通过.d来获取返回的内容。
}
});
});
2.请求ashx
注意问题:
(1)ajax方法中的contentType如果指定必须指定为“application/x-否则在ashx中request.form获取不到数据
(2)如果dataType为json,想要jQuery自动解析json数据,ashx必须返回严格的json数据,而且必须是双引号(用反义字符去反义)的格式,如:?context.Response.Write("{\"d\":\"Hello World\"}"),否则jquery会解析json失败。
(3)如果因为contentType未设置或者不是“application/x-类型,reque.form获取不到数据,可以通过context.Request.InputStream来获取请求内容。
(4)在请求ashx中data参数有这几种形式: data:{'a':'aa','b':'bb'}, data:"a=aa&b=bb",data:{a:'aa',b:'bb'},这三种数据都可以通过request.form[""]来获取到。
在asp.net webform开发中,用jQuery ajax传值一般有几种玩法
1)普通玩法:通过一般处理程序ashx进行处理;
2)高级玩法:通过aspx.cs中的静态方法+WebMethod进行处理;
3)文艺玩法:通过WCF进行处理。
第一种和第三种方法不在本文介绍范围之内,下面重点介绍第二种方法。
说明
在我们的印象里 asp.net的Web服务是以.asmx来结尾的,而我们现在的asp.net也能实现Web服务,这是因为默认Web.config中已经添加了System.Web.Handlers.ScriptModule,它是用于管理asp.net中ajax功能的HTTP模块,这样不管用户是请求.asmx文件还是.aspx文件,都会通过此处理程序来处理请求。
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h62675.shtml