jquery.ajax请求aspx和ashx的异同

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-www-form-urlencoded”,否则在ashx中request.form获取不到数据

(2)如果dataType为json,想要jQuery自动解析json数据,ashx必须返回严格的json数据,而且必须是双引号(用反义字符去反义)的格式,如: context.Response.Write("{\"d\":\"Hello World\"}"),否则jquery会解析json失败。

(3)如果因为contentType未设置或者不是“application/x-www-urlencoded”类型,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[""]来获取到。

posted on 2015-07-10 15:07  MisterS  阅读(873)  评论(0)    收藏  举报

导航