用JQuery Ajax 与一般处理程序 请求数据无刷新,以及如何调试错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用JQuery Ajax 与一般处理程序 请求数据无刷新,以及如何调试错误相关的知识,希望对你有一定的参考价值。

通过 ajax() 与 一般处理程序,请求数据库数据,实现界面无刷新。

Jquery ajax 请求参数详细说明 http://www.w3school.com.cn/jquery/ajax_ajax.asp 

 

代码:

 1 <!DOCTYPE html>
 2 
 3 <html xmlns="http://www.w3.org/1999/xhtml">
 4 <head runat="server">
 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 6     <title></title>
 7     <script src="jquery-1.3.2-vsdoc2.js"></script>
 8 </head>
 9 <body>
10     <form id="form1" runat="server">
11     <div style="margin: 50px;">
12     <input value="点击" type="button" id="btn"/>
13     </div>
14     </form>
15 <script type="text/javascript">
16     $(document).ready(function () {
17         $(#btn).click(function () {
18             $.ajax({
19                 url: ashx/Handler1.ashx,//string类型的参数,发送请求的地址
20                 type: POST,//请求方式(post or get)默认为get
21                 contenType: "application/json;charset-utf-8",//发送信息至服务器时内容编码类型
22                 dataType: text,//预期服务器返回的数据类型
23                 data: {},//发送的请求数据
24                 success: function (data) {
25                     alert(data);
26                 }
27             });
28         });
29     })
30 </script>
31 </body>
32 </html>
 1 using System.Web;
 2 
 3 namespace DemoAjxa.ashx
 4 {
 5     /// <summary>
 6     /// Handler1 的摘要说明
 7     /// </summary>
 8     public class Handler1 : IHttpHandler
 9     {
10 
11         public void ProcessRequest(HttpContext context)
12         {
13             context.Response.ContentType = "text/plain";
14 
15             context.Response.Write("Hello World");
16         }
17 
18         public bool IsReusable
19         {
20             get
21             {
22                 return false;
23             }
24         }
25     }
26 }

效果:

技术分享

 

上面是post请求,获得纯文本字符串,如果是要获得json 数据的话

则需要将ajax 的参数dataType设为 josn,一般处理程序 context.Response.Write();返回的数据类型也必须是json 格式哦

然后将获得的json 数据解析并绑定到界面上

列: dataType: ‘json‘,//预期服务器返回的数据类型


data{name:‘huangenai‘}如果data带参数,
在一般处理程序这样可以获得传过来的参数
string name=context.Request["name"].ToString();

关于请求返回为error
1.查看 url 请求地址是否正确

火狐浏览器,安装插件 Firebug,F12可以看到报错了 显示请求地址NotFound

技术分享

2.data{} 即时不传参数也要这样写上哦,不然会报错的

 

3.返回的数据类型是否与 dataType 一致

如果不一致则会报错

技术分享

4.检查时否发生了跨域的请求

 

5.编码格式是否正确

 

当然也可以在代码中这样写,将错误输出查看到底是什么错误

 1 <script type="text/javascript">
 2     $(document).ready(function () {
 3         $(‘#btn‘).click(function () {
 4             $.ajax({
 5                 url: ‘ashx/Handler1.ashx‘,//string类型的参数,发送请求的地址
 6                 type: ‘POST‘,//请求方式(post or get)默认为get
 7                 contenType: "application/json;charset-utf-8",//发送信息至服务器时内容编码类型
 8                 dataType: ‘text‘,//预期服务器返回的数据类型
 9                 data: {name:‘huangenai‘},//发送的请求数据
10                 success: function (data) {
11                     alert(data);
12                 }, error: function (XMLHttpRequest) {
13                     alert("Ajax请求失败,错误状态为:"+XMLHttpRequest.status);
14                 }
15             });
16         });
17     })
18 </script>

效果:

技术分享

 

XMLHttpRequest 对象

属性

readyState:请求状态,开始请求时值为0直到请求完成这个值增长到4(readyState共有5中状态,0未初始化,1已初始化,2发送请求,3开始接收结果,4接收结果完毕。

responseText:目前为止接收到的响应体,readyState<3此属性为空字符串,=3为当前响应体,=4则为完整响应体

responseXML:服务器端相应,解析为xml并作为Document对象返回

status:服务器端返回的状态码,=200成功,=404表示“Not Found”

statusText:用名称表示的服务器端返回状态,对于“OK”为200,“Not Found”为400

 

以上是关于用JQuery Ajax 与一般处理程序 请求数据无刷新,以及如何调试错误的主要内容,如果未能解决你的问题,请参考以下文章

jquery ajax请求方式与提示用户正在处理请稍等,等待数据返回时loading的显示

.net Ajax与后台一般处理程序(ashx) 交互

现在webform处理ajax请求用一般处理程序ashx还是用后台去处理

统一处理jquery ajax请求过程中的异常错误信息的机制

甩掉 ashx/asmx,使用jQuery.ajaxWebService请求WebMethod,Ajax处理更加简练

jquery ajax参数