在asp.net中javascript ajax的运行过程详讲(非jquery的ajax)
来源:互联网 发布:手机运行电脑软件 编辑:程序博客网 时间:2024/06/07 02:16
其实ajax它一直都有一个自己的运行过程的,不管是在哪一门语言中,它都是一样的,只是某些表示不同了。
以前写java现在我想看看asp.net中是否也可以像java一样去操作ajax,结果是当然的。
首先,我想在我的js文件中去发送ajax请求,然后收到响应的json数组,把json数组中的内容填充到页面的表格中去。
准备工作:
建立一个js文件 :myajax.js
建立两个aspx文件: cotroller.aspx,show.aspx
(ajax直接请求后台,其实也就是一个url的请求,那么我们用一个aspx来模拟一个后台的controller其实是一样的。用一个来显示表格.)
完了,准备工作就这么简单!!!
代码准备工作:
1.在show.aspx的body中插入一个表格:
<table id="mytable" style="display:none" border="1"> <tr> <th>Id</th> <th>名字</th> </tr> </table>
2.在show.aspx中引入myajax.js
<script src="Scripts/myajax.js" type="text/javascript"></script>
现在我们要做的就是到myajax.js中去写一个ajax请求,请求controller.aspx,然后,再到controller.aspx中去得到请求的信息,再返回信息给myajax.js
myajax.js中的代码:
1.建立核心对象
var req = new XMLHttpRequest(); //这里我们假定支持此对象
2.设置url
var url = "controller.aspx" +"?req=" + 1;
3.打开连接
req.open("GET", url); // An HTTP GET request for the url
4.状态监听
req.onreadystatechange = function () { if (req.readyState == 4 && req.status == 200) { var response = req.responseText; //得到响应的字符串 其实我们然望的这个字符串是一个json数组。 //但是asp.net中的结果可能会出乎你的意料 //如果是response.write响应的一个json,那么它是包括了html代码 //因为你的json字符串如果没有ajax监听,它就直接会显示在页面上 //所以它会包包含<html>之类的标签 //后面详讲..... }}
5.发送
req.send(null);
6.注意你的js代码,放在:
window.onload = function () { //放到这里面 页面加载过后再执行。 }
现在代码虽然还没有完善,但是你可以发请求了,那么你就要在controller.aspx中去写代码了
1.接收js发送过来的ajax请求
<body><%
// 我让这个页面充当controller,所以在这个页面中去接收发送过来的ajax请求
HttpRequest request = Request; //得到请求对象 String flag = request.QueryString["req"]; //接收参数 if (flag != null && "" != flag) //如果有这个参数,请明是一个ajax请求,这种写法实在太二了,不过能完成功能!!! { HttpResponse response = Response; //如果是ajax请求,我们就要响应,那么就去得到响应对象 response.ContentType = "application/json;charset=utf-8"; //设头类型,java中拿过来的。写上好点 string strJson = "[{'id':1,'name':'张三'},{'id':2,'name':'李四'},{'id':3,'name':'王五'}]"; //创建一个json数组 response.Write(strJson); //响应 response.End(); //结束 } %> <form id="form1" runat="server"> <div> </div> </form></body>
2.上面的代码已经接收了请求,并且给出了一个响应,就是我们的json数组,那么我们的ajax监听,就应该去得到这个json
ok,,,那么,现在回到js文件中:
req.onreadystatechange = function () { if (req.readyState == 4 && req.status == 200) { var response = req.responseText; alert(response); //你会发现这个json数组是放在<html>的<body>中,除json数组,其它的我们都是不要的!所以要做一定的处理,把json数组截取出来! var start = response.indexOf("["); var end = response.indexOf("]") + 1; var jsons = response.slice(start, end); //这里才真正地得到json数组。 var lenders = eval(jsons); // 转成js数组 var tables = document.getElementById("mytable"); //得到table元素 var trs = "" ;//拼行。很多行。每一行就是一个json对象转化而来 for (var i = 0; i < lenders.length; i++) { var trs = (trs + "<tr>" + "<td>" + lenders[i].id + "</td>" + "<td>" + lenders[i].name + "</td>" + "</tr>"); } tables.innerHTML = trs; //插入表格 tables.style.display = ""; //显示表格 } }
完了...整个过程就是这样。现在已经把json数组拼成了table中的行,并且显示出来了....
三个文件完整的代码:
js:
window.onload = function(){ var req = new XMLHttpRequest(); alert(req); var url = "request.aspx" + "?req=" + 1; req.open("GET", url); req.onreadystatechange = function () { if (req.readyState == 4 && req.status == 200) { var response = req.responseText; var start = response.indexOf("["); var end = response.indexOf("]") + 1; var jsons = response.slice(start, end); var lenders = eval(jsons); // Parse it to a JS array var tables = document.getElementById("mytable"); var trs = "" for (var i = 0; i < lenders.length; i++) { var trs = (trs + "<tr>" + "<td>" + lenders[i].id + "</td>" + "<td>" + lenders[i].name + "</td>" + "</tr>"); } tables.innerHTML = trs; tables.style.display = ""; } } req.send(null); }
controller.aspx:
<body><% HttpRequest request = Request; String flag = request.QueryString["req"]; if (flag != null && "" != flag) { HttpResponse response = Response; response.ContentType = "application/json;charset=utf-8"; string strJson = "[{'id':1,'name':'张三'},{'id':2,'name':'李四'},{'id':3,'name':'王五'}]"; response.Write(strJson); response.End(); } %> <form id="form1" runat="server"> <div> </div> </form></body></html>
show.aspx:
<head runat="server"> <title>ajax测试</title> <script src="Scripts/myajax.js" type="text/javascript"></script> </head><body> <form id="form1" runat="server"> </form> <label id = "la"> 解析json后的数据: </label> <table id="mytable" style="display:none" border="1"> <tr> <th>Id</th> <th>名字</th> </tr> </table></body></html>
这是最基础最基础的,算是ajax入门吧!!
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 在asp.net中javascript ajax的运行过程详讲(非jquery的ajax)
- asp.net中Jquery ajax和ashx的结合使用
- jquery 实现asp.net 的ajax
- ASP.NET+JQuery实现AJAX的分页
- jquery调用asp.net的Ajax方法
- JQUERY+ASP.NET的AJAX文件上传
- JQuery ajax调用asp.net的webMethod
- JQuery ajax调用asp.net的webMethod
- 通过jQuery调用ASP.NET的AJAX
- AJAX在ASP.NET中的应用(二)——Jquery封装的AJAX
- 在asp.net中基于Ajax的数据验证
- 在asp.net中基于Ajax的数据验证
- 在ASP.NET中使用AJAX的简单方法
- 在ASP.NET中使用AJAX的简单方法
- 在普通的asp.net网站中使用ajax控件
- 在ASP.NET中使用AJAX的简单方法
- 在普通的asp.net网站中使用ajax控件
- 在ASP.NET中使用AJAX的简单方法
- VS2005到VS2012的IDE导入外部库的方法
- c++控制台输入
- vlc-android编译
- 如何查看存储过程的定义 (SQL Server Management Studio)
- Ubuntu 13.04系统更新后状态栏消失解决
- 在asp.net中javascript ajax的运行过程详讲(非jquery的ajax)
- 变量申明与定义
- 读《黑客与画家》--关于创业问题的思考
- 从零开始?!
- 孙鑫VC++深入详解:Lesson6 Part5--- 给自建的动态子菜单配置COMMAN消息响应函数
- 不要害怕,付出了,没有收获!
- vc显示包含的库/verbose:lib
- 我要学编程,看什么书好?--^_^,这里推荐一些个人觉得很不错的书(五)小集篇
- sql语句中的逻辑运算:或、与、异或