Ajax的三种数据传输格式

首先说一下什么是Ajax

  Ajax的全称是Asynchronous JavaScript and XML(是异步的 javascript 和 XML),

  通过后台少量的数据交换实现不刷新网页从而进行网页动态的技术,ajax就可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

  Ajax能传输的数据格式一共有三种,HTML格式,XML格式,JSON格式

一,HTML格式

  使用HTML传输格式,最大特点是要使用DOM方法,获取结点,通过结点进行操作使用innerHTML进行对DOM标签的值写入,从而实现异步更新

  首先放HTML代码,下面的文件是从这一段代码来获取数据的

1 <h2><a >Andy</a></h2>
2 <a>aaaaaa</a>

  然后放JSP代码,

  首先要获取到对象的onlick方法,并且retuen fales这样做的目的是为了废除让a标签的跳转方法

  然后按一下几个步骤执行

  1.创建一个XMLHttpRequest对象

  2.准备发送的数据,一般准备两个一个URL一个Method

  3.调用XMLHttpRequest对象的Open方法,和Send方法,为了方便记忆,这里为了方便理解我所认为就是Open就是准备阶段,send就是发送。

  4.调用XMLHttpRequest对象的onreadystatechange()方法,这个方法会和数据或者服务器进行交互,并且这个过程会有4部,只有当XMLHttpRequest对象的readyState为4的时候表示交互完成

  5.调用XMLHttpRequest对象的status方法,这个对象代表的网页状态比如404(找不到网页) ,500(服务器内部错误),200(成功),

  6操作DOM对标签的值进行写入XMLHttpRequest对象的responseText就是返回的文本

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     <title>Ajax HTML格式传输</title>
12     <script type="text/javascript">
13         window.onload = function(){
14             //1.获取a结点,并为其添加相应的onclick函数
15             document.getElementsByTagName("a")[0].onclick = function(){
16             //3.创建一个XMLHttpRequest对象
17             var request = null;
18             request = new XMLHttpRequest();
19             //4.准备发送的数据:url
20             var url =this.href ;
21             var method = "GET";
22             //5.调用XMLHttpRequest的  Open 方法
23             request.open(method, url);
24             //6.调用XMLHttpRequest的 send  方法
25             request.send(null);
26             //7.为XMLHttpRequset 对象添加onreadystatechange相应函数
27             request.onreadystatechange = function(){
28                 //8.用requset对象的readyState方法判断是否进行到了第四步
29                 if(request.readyState == 4){
30                         //9.用requset对象的status判断页面请求是否成功
31                         if(request.status == 200 || request == 304){
32                             //2.获取到输入信息结点并放入返回的值
33                             document.getElementById("andy").innerHTML = request.responseText;
34                         }
35                     }
36                 }
37                 return false;
38             }
39         }
40     </script>
41   </head>
42
43   <body>
44       <a href="files/Ajax_HTML.html">andy</a>
45       <div id="andy"></div>
46   </body>
47 </html>

二,XML格式

  我认为,XML操作比HTML操作更为复杂,比上面就多了一个XML解析而已。

  同上首先先放XML代码

1 <?xml version="1.0" encoding="UTF-8"?>
2 <detalis>
3      <name>Andy</name>
4      <text>hahahahahaah</text>
5 </detalis>

  然后放JSP代码

  过程基本相同,只不过HTML传输格式传输使用responseText,而这里通过responseXML来获取XML文档,然后解析或者子节点的值在对DOM进行操作。

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     <title>Ajax XML格式传输</title>
12     <script type="text/javascript">
13         window.onload = function(){
14             //1.获取a结点,并为其添加相应的onclick函数
15             document.getElementsByTagName("a")[0].onclick = function(){
16             //3.创建一个XMLHttpRequest对象
17             var request =  new XMLHttpRequest();
18             //4.准备发送的数据:url
19             var url =this.href ;
20             var method = "GET";
21             //5.调用XMLHttpRequest的  Open 方法
22             request.open(method, url);
23             //6.调用XMLHttpRequest的 send  方法
24             request.send(null);
25             //7.为XMLHttpRequset 对象添加onreadystatechange相应函数
26             request.onreadystatechange = function(){
27                 //8.用requset对象的readyState方法判断是否进行到了第四步
28                 if(request.readyState == 4){
29                         //9.用requset对象的status判断页面请求是否成功
30                         if(request.status == 200 || request == 304){
31                             //结果是XML格式,所以需要使用respinseXML来获取
32                             var result =request.responseXML;
33                             //结果不能使用来先创建对应的结点再将结果加入到#Andy中
34                             /*
35                             目标格式为
36                             <h2><a >Andy</a></h2>
37                             <a>aaaaaa</a>
38                             */
39                             var name = result.getElementsByTagName("name")[0].firstChild.nodeValue;
40                             var text = result.getElementsByTagName("text")[0].firstChild.nodeValue;
41                             //alter(name);
42                             //alter(text);
43                             var nodea = document.createElement("a");
44                             nodea.appendChild(document.createTextNode(name));
45                             var nodeaa = document.createElement("a");
46                             nodeaa.appendChild(document.createTextNode(text));
47                             var andy = document.getElementById("andy");
48                             andy.appendChild(nodea);
49                             andy.appendChild(nodeaa);
50                         }
51                     }
52                 }
53                 return false;
54             }
55         }
56     </script>
57   </head>
58
59   <body>
60       <a href="files/Ajax_XML.xml">andy</a>
61       <div id="andy"></div>
62   </body>
63 </html>

三,json格式

  先说什么是JSON,json是javascript原生的,一种轻量级用户数据交换的一个东西,

  json中只能通过键值对的方式来存储数据,在js中使用的试用直接.键值就可以获得队形的VALUE

  值也可以再是一个json对象

  比如,这就是一会要用的js文件

   1 {"person":{ 2 "name":"andy", 3 "text":"hahahaha" 4 } 5 }

  下面上js代码

  

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     <title>Ajax XML格式传输</title>
12     <script type="text/javascript">
13         window.onload = function(){
14             //1.获取a结点,并为其添加相应的onclick函数
15             document.getElementsByTagName("a")[0].onclick = function(){
16             //3.创建一个XMLHttpRequest对象
17             var request =  new XMLHttpRequest();
18             //4.准备发送的数据:url
19             var url =this.href ;
20             var method = "GET";
21             //5.调用XMLHttpRequest的  Open 方法
22             request.open(method, url);
23             //6.调用XMLHttpRequest的 send  方法
24             request.send(null);
25             //7.为XMLHttpRequset 对象添加onreadystatechange相应函数
26             request.onreadystatechange = function(){
27                 //8.用requset对象的readyState方法判断是否进行到了第四步
28                 if(request.readyState == 4){
29                         //9.用requset对象的status判断页面请求是否成功
30                         if(request.status == 200 || request == 304){
31
32                             var result =request.responseText;
33                             var object = eval( "(" + result + ")" );
34                             //结果不能使用来先创建对应的结点再将结果加入到#Andy中
35                             /*
36                             目标格式为
37                             <h2><a >Andy</a></h2>
38                             <a>aaaaaa</a>
39                             */
40                             var name = object.person.name;
41                             var text = object.person.text;
42                             //alter(name);
43                             //alter(text);
44                             var nodea = document.createElement("a");
45                             nodea.appendChild(document.createTextNode(name));
46                             var nodeaa = document.createElement("a");
47                             nodeaa.appendChild(document.createTextNode(text));
48                             var andy = document.getElementById("andy");
49                             andy.appendChild(nodea);
50                             andy.appendChild(nodeaa);
51                         }
52                     }
53                 }
54                 return false;
55             }
56         }
57     </script>
58   </head>
59
60   <body>
61       <a href="files/Ajax_json.js">andy</a>
62       <div id="andy"></div>
63   </body>
64 </html>

初学者,这些只是个人理解。

时间: 2024-12-20 04:55:17

Ajax的三种数据传输格式的相关文章

Ajax——三种数据传输格式

一.HTML HTML由一些普通文本组成.如果服务器通过XMLHTTPRequest发送HTML,文本将存储在responseText属性中. 从服务器端发送的HTML的代码在浏览器端不需要用JavaScript进行解析. 可以直接使用innerHTML属性把服务器传输过来的HTML文本插入到页面中. ①.html文本 andy.html <h2><a href="[email protected]">Andy Budd</a></h2>

Ajax的三种实现及JSON解析

本文为学习笔记,属新手文章,欢迎指教!! 本文主要是比较三种实现Ajax的方式,为以后的学习开个头. 准备: 1.  prototype.js 2.  jquery1.3.2.min.js 3.  json2.js 后台处理程序(Servlet),访问路径servlet/testAjax: package ajax.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servl

IP地址的三种表示格式及在Socket编程中的应用

转自:http://blog.csdn.net/hguisu/article/details/7449955 使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理.IP地址其实有三种不同的表示格式:  1)Ascii(网络点分字符串)-        2) 网络地址(32位无符号整形,网络字节序,大头)        3)主机地址 (主机字节序)   IP地址是IP网络中数据传输的依据,它标识了IP网络中的一个连接,一台主机可以有多个IP地址,IP分组中的IP地址在网络

Ajax打开三种页面的请求

xmlhttprequest对象可以打开两种方式的页面请求 1,.asmx格式的webservice页面. 2,.aspx格式的web窗体 其中web窗体可以是调用一新建的web窗体,同时调用和被调用页面可以是同一个页面,表达的可能不够清楚,还是看示例吧. 一.调用.asmx格式的webservice页面 1,新建一个ASP.NET应用程序,在该应用程序中添加一web服务页面(webservice页面),此时项目中有三个页面,web窗体页面(Default.aspx).webservice页面(

PhpStrom如何安装主题?(总结三种不同格式安装方法)

在网上搜了很多都是不怎么齐全的方法,在这里我总结一下PhpStrom的三种不同格式的安装方法,以后就不用再去网上搜直接看我自己的博客就知道了.以下默认为Windows系统,Linux现在暂时还没更新. 不多说.直接上! 首先选择你自己喜欢的皮肤,这里有很多酷炫的皮肤可以选择:点我进入官网皮肤 我选好了,怎么安装呢?首先得看看你下载的文件格式是怎么样的,每个格式安装的方法都不一样. .icls文件 下载完格式后,把icls文件放到C:\Users\用户名\.PhpStorm2016.1(看你自身版

Loadrunner三种post格式的请求

Loadrunner三种post格式的请求 1 web_custom_request intweb_custom_request(const char *RequestName, <List of Attributes>, [EXTRARES, <List of Resource Attributes>,] LAST ); 第一种:自定义http格式的请求,可以是任何的方式或是body如下: web_custom_request("xxxxx", "U

类似于xml的一种数据传输格式protobuf

1.Protobuf 简介 Protocol Buffer是google 的一种数据交换的格式,已经在Github开源,目前最新版本是3.1.0.它独立于语言,独立于平台.google 提供了多种语言的实现:Java.C#.C++.Go 和 Python,Objective-C,每一种实现都包含了相应语言的编译器以及库文件.由于它是一种二进制的格式,比使用 XML 进行数据交换快许多.可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换.作为一种效率和兼容性都很优秀的二进制数据传输格式,

三种视频格式的区分 :VGA DVI HDMI

家里的高清电视越来越普遍,而这些高清电视大多带了VGA.DVI.HDMI的接口.笔记本电脑的屏幕太小,办公的人大多想要外接一个显示器.所以明白这三种视频信号接口的区别,是选购合适显示器的前提. 方法/步骤 提前说明下:三种接口的转接头都存在公针和母针的区别,购买转接线时要注意需要的是公针头还是母针头. VGA接头:针数为15的视频接口,主要用于老式的电脑输出.VGA输出和传递的是模拟信号.大家都知道计算机显卡产生的是数字信号,显示器使用的也是数字信号.所以使用VGA的视频接口相当于是经历了一个数

AJAX之三种数据传输格式详解

一.HTML HTML由一些普通文本组成.如果服务器通过XMLHTTPRequest发送HTML,文本将存储在responseText属性中. 从服务器端发送的HTML的代码在浏览器端不需要用JavaScript进行解析. 可以直接使用innerHTML属性把服务器传输过来的HTML文本插入到页面中. ①.html文本 andy.html <h2><a href="[email protected]">Andy Budd</a></h2>