码迷,mamicode.com
首页 > Web开发 > 详细

ajax与json实战

时间:2018-02-12 11:16:43      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:检查   仓库   就是   soj   防止   random   amp   问题   doc   


目录:(Ctrl+F进行检索)
1.javascript中底层的ajax异步请求后台操作的方法与实例。
2.jquery对ajax的操作方法
3.ajax详解
4.json详解
5.java中对json的处理。
6.java将json数据传值前台。
7.jsp前台对json进行处理。
8.ajax异步获取到后台的json并进行处理。
--------------------------------------------
1.传统的 ajax异步请求后台操作的方法。
特点:局部刷新,异步交互。
引入javascript.js:
<script type="text/javascript" src="http://libs.cdnjs.net/jquery/3.2.1/jquery.js"></script>
这是前端公共库CDN加速的远程仓库,当然也可以下载相关js文件然后引入,但必须是1.4以上的版本。以前的版本几乎没人用了。

传统的写法:

 1 <script type="text/javascript">
 2     function createXMLHttpRequest() {//为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。
 3         //如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :
 4         //第一步创建XMLHttpRequest()
 5         try {
 6             xmlHttp = new XMLHttpRequest();
 7         } catch (tryMS) {
 8             try {
 9                 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
10             } catch (otherMS) {
11                 try {
12                     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
13                 } catch (failed) {
14                     xmlHttp = null;
15                     // 这里可以报一个错误,无法获得 XMLHttpRequest对象    
16                 }
17             }
18         }
19         return xmlHttp;
20     }
21     window.onload = function() {
22         document.getElementById("b1").onclick = function() {
23             //调用AJAX发送请求
24             /**
25              * 1.创建xmlHttpRequest对象
26              * 2.绑定回调函数
27              * 3.与服务器建立连接
28              * 4.发送数据
29              * 5.回调函数处理相应的数据
30              */
31             //第一步:创建XMLHttpRequest对象,往上看怎么验证浏览器支持的↑
32             var xmlHttp = createXMLHttpRequest();
33 
34             //第二步:绑定回调函数
35 
36             xmlHttp.onreadystatechange = function() {
37                 if (xmlHttp.readyState == 4) {
38                     //表示readyState的状态已经在第四步,数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据,
39                     //ajax readyState的五种状态详解请看这篇:http://www.jb51.net/article/16966.htm
40                     if (xmlHttp.status == 200) {//http状态码为200表示正常交互完成。
41                         //两步都验证过了则可以设置回调函数
42                         var callback = xmlHttp.responseText;
43                         //如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
44                         //responseText是获得字符串形式的响应数据。responseXML则获得 XML 形式的响应数据。
45                         document.getElementById("myDiv").innerHTML = callback;//这里就可以预设值对回调函数的处理。比如这里把回调函数展示到 id为myDiv的标签中。
46                     }
47                 }
48             }
49             //第三步:与服务器建立连接
50             xmlHttp.open("POST", "../servlet/AjaxServlet", true);
51             //第一个参数是请求的类型,get或者post,但是get会取得缓存的数据,get携带数据量有限,get对大量未知字符输入时不稳定,有以上三点障碍时,请选择POST;
52             //第二个参数是请求的地址url,这个 地址可以请求任何类型的文件如.txt .xml 或者是.js ,为了防止虚拟路径问题,建议使用el表达式动态获取地址,把url修改为:“${pageContext.request.contextPath}/servlet/AjaxServlet”。再者,如果担心get请求取得了缓存数据,可以让地址每次都不一样就获取不到缓存了,比如这样写:“${pageContext.request.contextPath}/servlet/AjaxServlet?t=”+Math.random()。
53             //第三个参数是设置async 参数,true为异步请求,false为同步请求,false请求时会导致浏览器锁住,等数据处理完才能操作页面。而且,当您使用 async=false 时,请不要编写 onreadystatechange 函数,把代码放到 send() 语句后面即可。就是说上面的document.getElementById("myDiv").innerHTML=callback;把这一段放到send后面。
54             //第四步:向服务器发送请求
55             xmlHttp.setRequestHeader("CONTENT-TYPE",
56                     "application/x-www-form-urlencoded");//向请求添加 HTTP 头。可以添加多个。自行百度。
57             xmlHttp.send("name=张三");//send中的string是在请求正文里,只在post的时候用,get的话就空着,因为例子是post请求的数据,所以这里写了一个例子。
58         }
59     }
60 </script>

底层ajax案例:
1.底层ajax用get获取.txt文件
txt文件放在WebRoot文件夹内,.txt内容为:

1 <p id="txt1" style="color:red">woshi yiduan txt wenben !</p>
2 <p id="txt2">woshi dier duan txt wenben !</p>

 

js代码:

  

 1 <script type="text/javascript">
 2     function createXMLHttpRequest() {
 3         try {
 4             xmlHttp = new XMLHttpRequest();
 5         } catch (tryMS) {
 6             try {
 7                 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
 8             } catch (otherMS) {
 9                 try {
10                     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
11                 } catch (failed) {
12                     xmlHttp = null;
13                     // 这里可以报一个错误,无法获得 XMLHttpRequest对象    
14                 }
15             }
16         }
17         return xmlHttp;
18     }
19     window.onload = function() {
20         document.getElementById("bt1").onclick = function() {
21             var xmlHttp = createXMLHttpRequest();
22             xmlHttp.onreadystatechange = function() {
23                 if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
24                     document.getElementById("myDiv").innerHTML = xmlHttp.responseText;
25                 }
26             }
27 
28             xmlHttp.open("GET",
29                     "${pageContext.request.contextPath}/test/test.txt?t="
30                             + Math.random(), true);
31 
32             xmlHttp.setRequestHeader("CONTENT-TYPE",
33                     "application/x-www-form-urlencoded");
34             xmlHttp.send();
35         }
36     }
37 </script>
38 
39 
40 </head>
41 
42 <body>
43 
44     <div id="myDiv">
45         <h2>通过 AJAX 改变文本</h2>
46     </div>
47     <button id="bt1">改变内容</button>
48 
49 </body>

 

展示结果:

  技术分享图片

说明:这里怎么会有颜色变化呢?因为,我们的xmlHttp.responseText是可以自动转化标签,

 




---------------------------------
2.json
说明:JSON是一种数据交互的格式.
数据的交互格式:
1.xml
1.标签时成对出现的
2.xml中的格式对对固定,不允许修改.
如果对于数据要求较为严格时,首选xml(报文)
2.JSON
1.JSON是一种轻量级的数据交互格式.
在传输过程中,只需要传递有效信息.
对于数据要求相对宽松,并且传递速度较快时.
JSON格式说明:
array数组格式:
["value1","value2","value3"]

Object对象格式:
{"id":"1","name":"tom"}

复杂格式:
A:["value1","value2",{"id":1,"name":"tom"}]
B:[{id:"1",name:"tom"},{id:2,name:"jerry"},{id:3,name:"herry"}]
语法:如果value值是数字。可以不加""号,如果value值是字符,必须加""号,对于key而言,(注意是key!就是对象格式!),加不加""号都可以。
以上JSON格式要牢记!牢记!牢记!重要的事情说三遍。实在记不住,就都加上引号!
-------------------------
3.java中转json的各种方法
第一种:String类型,要按着json格式写出一个字符串,就像上面的一样。
如:String str = {"book1":[{"yema":"12","neirong":"文绉绉"},{"页码":"22","neirong":"侠客片段"}],"book2":[{"页码":"1","内容":"爱情片段"},{"页码":"5","neirong":"恐怖片段"}]};
但是!直接这样写在java里是不行的,因为""会编译错误,需要用\号对每个“号进行转义,这里有一个网站可以快速转义,地址,http://www.sojson.com/yasuo.html
在转义后是这样的
String str ="{\"book1\":[{\"yema\":\"12\",\"neirong\":\"文绉绉\"},{\"页码\":\"22\",\"neirong\":\"侠客片段\"}],\"book2\":[{\"页码\":\"1\",\"内容\":\"爱情片段\"},{\"页码\":\"5\",\"neirong\":\"恐怖片段\"}]}";
看。这一段放在java中就没问题了。

ajax与json实战

标签:检查   仓库   就是   soj   防止   random   amp   问题   doc   

原文地址:https://www.cnblogs.com/pxffly/p/8443739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!