ashxjquery的简单介绍

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=aab=bb",data:{a:'aa',b:'bb'},这三种数据都可以通过request.form[""]来获取到。

关于jquery调用ashx文件的问题

如果你要保证数据的安全性,你可以在ashx中使用session验证。

如:你的index.aspx中使用jquery回调ashx数据,那么在index.aspx page_load时session["checked"]="true",在ashx中验证session是否存在。

但ashx中要获取session内容还需如下几步:

①导入命名空间

using System;

using System.Web;

using System.Web.SessionState; //第一步:导入此命名空间

②实现接口

public class MyWeb : IHttpHandler将此改为如下:

public class MyWeb : IHttpHandler ,IRequiresSessionState //第二步:实现接口 到此就可以像平时一样用Session了

③调用方法

HttpContext.Current.Session["Session变量名称"]

怎么使用jquery调用.ashx文件获取返回值

$.ajax({

url:'/你的ashx地址',

....

success:function(data){

//data就是你ashx返回的数据

}

})

jQuery中的ajax如何调用ashx中的静态方法?

首先这是一个错误的认识,

jquery无论怎么样,针对 的都是请求,通俗点讲,jquery所做的事就是提交参数按照一定的方法给某个url。所以,jquery是无法调用ashx的静态方法的,只能丢一个请求到服务器。

调用这个方法,是服务器的脚本解析这个请求,然后再去调用这个方法,返回数据。

jQuery中调用ashx文件的问题

jquery ajax dataType有一下几种类型:

类型:String

预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:

"xml": 返回 XML 文档,可用 jQuery 处理。

"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。

"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)

"json": 返回 JSON 数据 。

"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

"text": 返回纯文本字符串

——————-综上所述

我们可以知道,利用ajax异步调用返回的结果只有 sring、xml、json、text、script、html、jsonp

而我们从一般处理程序(handler1.ashx)中返回的则HTTP响应流

而ajax解析成了 string类型解析错误。

,你可以换一种方式,返回图片的路径,通过jquery进行加载图片】

$.ajax({

url: "Handler1.ashx",

type: "post",

data: "",

error: function (request, message, ex) {

alert(message + request + ex);

},

success: function (returnValue) {

$("#m").attr("src", returnValue);

}

});

context.Response.Write(context.Server.MapPath("2.jpg"));


分享标题:ashxjquery的简单介绍
分享网址:http://scjbc.cn/article/phsdih.html

其他资讯