手机版

详细解释JQuery Ajax在ASP.NET的总结

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

自从JQuery出现以来,Ajax的使用变得越来越方便,但短时间内还是会出现一些痛苦的问题。本文简要总结了使用JQuery Ajax时应该注意的一些问题。如有不当或不完善之处,请指正和补充。

本文将从三个方面进行讨论:Ajax请求aspx、ashx和asmx。

首先看看对aspx的请求

有两种方法可以为Aspx页面请求Ajax:

1.通过使用get或post方法,将页面地址作为url参数的值传递,并直接附加一些标签参数进行请求。这样的Ajax被一些人誉为“假Ajax”,表面上并没有刷新页面。其实后台执行和刷新页面的效果是一样的。

事实上,在这种情况下,您也可以在页面上请求特定的方法。你可以通过使用附带的参数来判断“请求”一个特定的方法。

下面展示了如何使用两种不同的方法来请求两个不同的页面,但是只提取了代码,详细的代码可以在文章的最后下载。

前台:

//直接请求页面的方式是$ (function () {/* $)。get ('requestpage.aspx ',{'token' :' Ajax'},function (data) {$ ('# datashow ')。文本(数据);} );*/$.Ajax ({type:' post ',url:' responsepage.aspx ',//data : ' { token ' : ' Ajax ' } ',//你不能用这种方式传递参数,请告诉我们为什么。data:'token=ajax ',success:函数(数据){ $('#dataShow ')。文本(数据);} });})背景:

受保护的void Page_Load(对象发送方,事件参数e){ if(!这个。IsPostBack) { if((请求['token']?)=='ajax') {//下面的内部依赖关系可以放在一个方法中,然后用token来判断执行哪个方法。回应。写(‘我直接请求aspx页面返回的文本!’);回应。end();}}}上述请求的返回值都是字符串,即dataType是文本或html。

如果您希望请求返回的数据是xml或json格式的呢?

如果是xml格式,需要加一句response . content type=" application/XML ";需要注意的另一点是,Write中的内容必须是可以解析成xml的字符串。例如,“my123/my”可以,但“123”不行,因为返回信息中的responseXml等于null。下图:

前台:

$.Ajax ({type:' post ',url:' responsepage.aspx ',//data : ' { token ' : ' Ajax ' } ',//你不能用这种方式传递参数,请告诉我们为什么。Data:“令牌=Ajax”。//不需要指定contentType,因为指定之后会返回整个页面的html。不知道为什么,求解答。dataType: 'xml ',success:函数(数据){ alert(数据);},error:函数(d,c,e){ alert(e);} });背景:

//如果返回的响应是xml,则必须设置response。content type=' application/XML ';//如果返回的响应是xml,则返回的字符串必须是可以解析的xml文档格式。回应。写(' my 123/my ');回应。end();如果它是json格式,短语response。content type="application/JSON "在后台代码中是可选的,不影响返回值。但是,响应中的值。写必须是json格式,否则会出现无效的Json格式错误。

前台:

$.Ajax ({type:' post ',url:' responsepage.aspx ',//data : ' { token ' : ' Ajax ' } ',//数据必须采用{key: value}的形式,这是一个字符串,不可接受。//data: {token:' Ajax'}。//这个方法也是可行的。Data:“令牌=Ajax”。//不需要指定contentType,因为jquery会自动添加Content Type=" application/x-www-form-URL code "。dataType: 'json ',success:函数(数据){ alert(数据);},error:函数(d,c,e){ alert(e);} });记录:如果直接请求一个页面,如果数据使用的是字符串形式的' token ' : ' ajax ' } ',jquery就不能转换成token=ajax的形式。

根据jquery文档,可以使用{key: value}形式的数据请求页面,jquery会自动添加内容类型=" application/x-www-form-URL code ",这样传入的数据会自动转换成key=value的形式。

背景:

//如果返回的响应是xml,则必须设置response。content type=' application/JSON ';//如果返回的响应是xml,则返回的字符串必须是可以解析的xml文档格式。回应。写("[123]');回应。end();2.在aspx页面的背景中请求方法。

实际上,上述直接请求页面的方法也引入了在页面内请求方法的解决方案,即在前台ajax中传递一个参数作为标签,比如上面的“token”,然后在后台page_load中判断token的值,根据不同的值执行不同的方法。下面介绍直接执行页面后台的方法。

(1)使用简单的get或post方法时,由于无法设置contentType和dataType,即使请求了页面中的方法,最终请求的还是当前页面,返回值仍然是当前页面的html内容。因此,在请求方法时,简单的方法并不适合。

(2)当使用非简单方法时,无论是post还是get,如果dataType是xml、text或者html,最终返回的值仍然是整个html页面的内容。因此,如果您想考虑该值,请将dataType设置为“json”,不要忘记将contentType设置为“application/JSON;Charset=utf-8 ",不设置这个就不能返回json。此外,必须确保后台请求的方法是静态的,用[webmethod]标记,并且必须是公共的。

前台:

$.ajax({ type: 'post ',URL : ' request page . aspx/request method ',content type : ' application/JSON;charset=utf-8 ',dataType: 'json ',success:函数(RES){ alert(' success : ' RES . d);//注意,需要在这个点后加一个D,才能得到字符串信息。至于为什么需要添加D,可以通过chrome,o ( _ ) o}、error :函数(xmlreq,err,c) {alert ('error 3360' err)看到返回的响应;} });背景:

Ajax需要请求的后台方法[webmethod] [scriptmethod(使用http get=true)]。//如果要使用POST请求,删除标记公共静态字符串请求的方法(){ return '[123]';}直接使用post没有问题:

如果类型更改为“get”,将出现“500个内部错误”。错误消息为:{'Message': '试图使用GET请求调用方法“RequestedMethod”,但这是不允许的。

解决方法是在POST方法上添加一个标记[ScriptMethod(使用http Get=true)],脚本方法在System下。之后,前台可以通过get请求,但是如果添加了这个标记,前台就不能通过post请求了。

3.在带有参数的aspx页面的背景中请求方法

前台:

$.ajax({ type: 'Post ',URL : ' response page . aspx/request method 1 ',data: ' { ' msg ' : ' hello ' } ',content type : ' application/JSON;Charset=utf-8 ',//别忘了这句话。dataType: 'json ',success:函数(res) { $('#dataShow ')。文本(' success : ' RES . d);//注意有一个d,至于为什么要通过chrome,o ( _ ) o. },error:函数(xmlReq,err,c) { $('#dataShow ')来看响应。文本(' error : ' err);} });背景:

[WebMethod]公共静态字符串RequestMethod1(字符串msg){ return msg;}总的来说,有参数的方式和没有参数的方式差不多。不同的是,当使用ajax请求时,您应该传递一个数据参数。请注意,该数据必须是json格式的字符串,否则会报告json错误。为什么,因为您传递的contentType是application/json。

对asmx(webservice)的请求

请求Webservice时,主要是请求webservice中的方法。在请求之前,不要忘记代码开头的备注提示。"//如果您想允许使用ASP.NET Ajax从脚本中调用这个web服务,请取消对以下行的注释。

//[系统。网站。脚本。服务。脚本服务]"

在webservice中请求方法的过程类似于请求aspx页面背景方法的过程,但是有一些不同。

请求的web服务中方法的特征:

(1)请求的方法必须是公共的。

(2)方法必须有一个[WebMethod]标记。

(3)如果要通过Get请求,还应该有[script方法(使用http get=true)]标记。当使用get方法请求Webservice时,仅仅添加这个标签是不够的,还要修改Web。否则,“请求格式无法识别,因为URL意外地以“/GetXmlByGet”结尾。”错误。修改方法是:在系统. web配置部分添加以下红色内容:

系统。网........web服务协议add name=' http get '/add name=' http post '/protocol/web服务/system。web (4)请求xml数据类型时,需要注意的是,如果方法返回字符串类型,返回的xml格式如下:

如果方法返回字符串,则返回的字符串将被包装在字符串标记中并返回。

例如,以下方法请求后的返回值:

[webmethod]公共字符串getxmlbyPost () {return '我通过Post请求了返回的XML ';}返回值:

?xml版本='1.0 '编码='utf-8 '?String xmlns='http://tempuri.org/'我通过Post请求返回xml/string。红色部分是请求的方法返回的字符串,其他部分是自动添加的,所以在前台通过jquery获取数据时,应该是$ (res)。查找(“字符串”)。text();如果方法返回一个xmlDocument对象,它就是在方法中构造的xml对象。

例如,以下方法请求后的返回值是:

//使用Get请求xml,注意返回的字符串必须是可以解析的xml格式。[WebMethod][script method(UseHttpGet=true)]public system . XML . XmlDocument GetXmlByGet(){ string XML='?xml版本=\'1.0 '编码=\'utf-8\ '?我的我通过获取请求返回的XML/我的;系统。新系统。XML . XMl document();医生。load XMl(XML);退货单;{返回的响应是:

?xml版本=\'1.0 '编码=\'utf-8\ '?我的我请求返回的XML/我的获取/我的。此时,我可以通过$ (res)获得数据。查找(“我的”)。文本()。此时操作完全是自己xml构造的。

(5)需要注意的是,返回的数据也是“[d:{}]”格式,并且”。d”在前台获取时必须添加,其余部分与xml类似。

(6)文字类型不多说了。

对ashx的请求

对ashx的请求类似于对apsx页面的直接请求,毕竟数据是通过响应返回的。写(字符串)。

要注意以下几点:语境的价值。响应。内容类型根据数据类型的值来区分:

文本:“文本/纯文本”;

XML:“应用程序/XML”;

JSON:“应用程序/json”。

当dataType是xml时,响应中的字符串。Write(字符串)必须符合xml格式;当它是json时,字符串作为响应。Write(string)必须符合json格式,否则会出现解析错误,和aspx页面一样。

如果要使用会话,请添加系统的引用。Web.SessionState转换为处理程序的代码,并让处理程序继承IRequiresSessionState接口,这个接口必须被继承,否则会出现错误。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:详细解释JQuery Ajax在ASP.NET的总结是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。