首页 > 其他分享 >AJAX之三种数据传输格式详解

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

时间:2022-10-19 11:04:12浏览次数:48  
标签:website name request AJAX 详解 var 数据传输 document com

一、HTML

  • HTML由一些普通文本组成。如果服务器通过XMLHTTPRequest发送HTML,文本将存储在responseText属性中。
  • 从服务器端发送的HTML的代码在浏览器端不需要用JavaScript进行解析。
  • 可以直接使用innerHTML属性把服务器传输过来的HTML文本插入到页面中。

①、html文本

andy.html
<h2><a href="[email protected]">Andy Budd</a></h2>
<a href="http://anybudd.com">http://anybudd.com</a>
jeremy.html
<h2><a href="">Jeremy Budd</a></h2>
<a href="">http://Jeremy.com</a>
richard.html
<h2><a href="">Richard Budd</a></h2>
<a href="">http://Richard Budd.com</a>

②、解析HTML文本

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload=function(){
var aNodes=document.getElementsByTagName("a");
for(var i=0;i<aNodes.length;i++){
aNodes[i].onclick=function(){
var request=new XMLHttpRequest();
var method="GET";
var url=this.href;
request.open(method,url);
request.send(null);
request.onreadystatechange=function(){
if(request.readyState==4){
if(request.status==200){
document.getElementById("details").innerHTML=request.responseText;return false;
}
}
}

</script>
</head>

<body>
<h1>People</h1>
<ul>
<li><a href="files/andy.html">Andy</a></li>
<li><a href="files/richard.html">Richard</a></li>
<li><a href="files/jeremy.html">Jeremy</a></li>
</ul>
<div id="details"></div>
</body>
</html>

二、XML

  • XML是一种通用的数据格式
  • 不必把数据强加到已定义好的格式中,而是要为数据自定义合适的标记
  • 利用DOM可以完全掌控文档

①、xml文档

andy.xml
<?xml version="1.0" encoding="UTF-8"?>
<details>
<name>andy keith</name>
<website>http://andys.com/</website>
<email>[email protected]</email>
</details>
jeremy.xml
<?xml version="1.0" encoding="UTF-8"?>
<details>
<name>jeremy keith</name>
<website>http://adsds.com/</website>
<email>[email protected]</email>
</details>
richar.xml
<?xml version="1.0" encoding="UTF-8"?>
<details>
<name>richard keith</name>
<website>http://richard.com/</website>
<email>[email protected]</email>
</details>

③、解析XML

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload=function(){
var aNodes=document.getElementsByTagName("a");
for(var i=0;i<aNodes.length;i++){
aNodes[i].onclick=function(){
var request=new XMLHttpRequest();
var method="GET";
var url=this.href;
request.open(method,url);
request.send(null);
request.onreadystatechange=function(){
if(request.readyState==4){
if(request.status==200){
//1.结果为xml格式,所以需要使用responsexml来获取
var result=request.responseXML;
//2.结果不能直接使用,必须先创建对应的节点,再把节点加入到details里面
//目标格式为
/*
<h2><a href="[email protected]">Andy Budd</a></h2>
<a href="http://anybudd.com">http://anybudd.com</a>
*/
var name=result.getElementsByTagName("name")[0].firstChild.nodeValue;
var website=result.getElementsByTagName("website")[0].firstChild.nodeValue;
var email=result.getElementsByTagName("email")[0].firstChild.nodeValue;
//alert(name);
//alert(website);
//alert(email);
var aNode=document.createElement("a");
aNode.appendChild(document.createTextNode(name));
aNode.href="mailto:"+email;

var h2Node=document.createElement("h2");
h2Node.appendChild(aNode);

var aNode2=document.createElement("a");
aNode2.appendChild(document.createTextNode(website));
aNode2.href=website;

var detailsNode=document.getElementById("details");
detailsNode.innerHTML="";
detailsNode.appendChild(h2Node);
detailsNode.appendChild(aNode2);

}
}
}
return false;
}
}
}
</script>
</head>

<body>
<h1>People</h1>
<ul>
<li><a href="files/andy.xml">Andy</a></li>
<li><a href="files/richard.xml">Richard</a></li>
<li><a href="files/jeremy.xml">Jeremy</a></li>
</ul>
<div id="details"></div>
</body>
</html>

三、JSON

  • JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式。
  • JSON的规则很简单:对象是一个无序的键值对的集合。一个对象以“{” 左括号开始,以“}”右括号结束。每个“名称”后跟一个“:”(冒号);键值对之间用“,”(逗号分隔 )
  • JSON只是一种文本字符串。它被存储在responseText属性中
  • 函数eval()方法将字符串解析为JOSN对象

①、json文档

andy.js
{"person":{
"name":"andy budd",
"website":"http://andy.com",
"email":"[email protected]"
}
}

jeremy.js

{"person":{
"name":"jeremy budd",
"website":"http://jeremy.com",
"email":"[email protected]"
}
}

richard.js

{"person":{
"name":"richard budd",
"website":"http://richard.com",
"email":"[email protected]"
}
}

②、解析JSON

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
window.onload=function(){
var aNodes=document.getElementsByTagName("a");
for(var i=0;i<aNodes.length;i++){
aNodes[i].onclick=function(){
var request=new XMLHttpRequest();
var method="GET";
var url=this.href;
request.open(method,url);
request.send(null);
request.onreadystatechange=function(){
if(request.readyState==4){
if(request.status==200){
//1.结果为JSON格式,所以需要使用responseText来获取
var result=request.responseText;
                 //使用json.js API
             // var object = result.parseJOSN();
var object=eval("("+result+")");
//2.结果不能直接使用,必须先创建对应的节点,再把节点加入到details里面
//目标格式为
/*
<h2><a href="[email protected]">Andy Budd</a></h2>
<a href="http://anybudd.com">http://anybudd.com</a>
*/
var name=object.person.name;
var website=object.person.website;
var email=object.person.email;
//alert(name);
//alert(website);
//alert(email);
var aNode=document.createElement("a");
aNode.appendChild(document.createTextNode(name));
aNode.href="mailto:"+email;

var h2Node=document.createElement("h2");
h2Node.appendChild(aNode);

var aNode2=document.createElement("a");
aNode2.appendChild(document.createTextNode(website));
aNode2.href=website;

var detailsNode=document.getElementById("details");
detailsNode.innerHTML="";
detailsNode.appendChild(h2Node);
detailsNode.appendChild(aNode2);

}
}
}
return false;
}
}
}

</script>
</head>

<body>
<h1>People</h1>
<ul>
   <li><a href="files/andy.js">Andy</a></li>
<li><a href="files/richard.js">Richard</a></li>
<li><a href="files/jeremy.js">Jeremy</a></li>
</ul>
<div id="details"></div>
</body>
</html>

三、三者对比

  • 若应用程序不需要与其他应用程序共享数据的时候,使用HTML片段来返回数据时最简单
  • 如果数据需要重用,JOSN文件是个不错的选择,其在性能和文件大小方面有优势。
  • 当远程应用程序未知时,XML文档是首选

 

 

 



标签:website,name,request,AJAX,详解,var,数据传输,document,com
From: https://blog.51cto.com/aaronthon/5769009

相关文章

  • 深入剖析Redis系列: Redis集群模式搭建与原理详解
    前言在Redis3.0之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态。RedisCluster是Redis的 分布式解决方案,在3.0版本正式推出,有效地解决了Redis在 分布式 ......
  • 「详解」看界面控件DevExtreme如何实现异步验证
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能......
  • Docker详解与部署微服务实战
    2013年发布至今,Docker一直广受瞩目,被认为可能会改变软件行业。但是,许多人并不清楚Docker到底是什么,要解决什么问题,好处又在哪里?今天就来详细解释,帮助大家理解它,还带有简单......
  • Qt -- QDockWidget嵌套布局详解-实现Visual Studio布局
    概述许多工程软件,如QtCreator,VS,matlab等,都是使用dock布局窗口,这样用户可以自定义界面,自由组合窗口。Qt的嵌套布局由QDockWidget完成,用QtCreator拖界面得到的dock布置形......
  • JDBC API 详解
    JDBCAPI详解DriverManager驱动管理类作用:1.注册驱动获取数据库连接 Connection数据库连接对象作用:获取执行SQL对象普通执行SQL对象Statement creatStat......
  • Elasticsearch 缓存深入详解
    手敲脑图串讲Elasticsearch核心知识点1、Elasticsearch缓存引出Elasticsearch查询的响应需要占用CPU、内存资源,在复杂业务场景,会出现慢查询,需要花费大量的时间。如......
  • Oracle 19C静默安装详解
    1.检查主机名和网络并且配置/etc/hosts文件关闭防火墙#检查防火墙状态[root@bogonapp]#systemctlstatusfirewalld.service●firewalld.service-firewalld-dynamic......
  • MQ详解
    什么是MQ?【1】MQ:MessageQueue,消息队列。队列,是一种FIFO先进先出的数据结构。消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进行处理。QQ和微信就......
  • cron表达式详解
    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:(1) SecondsMinutesHoursDayofMonthMonthDayofWeekYear......
  • @PostConstruct详解
    定义:@PostConstruct是Java自带的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。从JavaEE5规范开始,Servl......