Ajax -- 数据格式

       Ajax 不用刷新页面,但可以和服务端进行通信的方式;ajax向服务器发送异步请求,服务器返回部分数据,浏览器利用这些数据对当前页面部分更新;整个页面屋刷新.

ajax传输数据的3中方式:

XML:笨重,解析困难,但是XML是通用的数据交换格式

HTML:不需要解析,直接可以存放到文档中,若仅更新一部分区域,但传输的数据不是很方便,,且HTML代码需要拼装完成

JSON: 小巧,有面向对象的特征,且很多第三方的jar包可以把java对象或集合装为JSON字符串

使用jQuery 完成Ajax操作:

load方法: 可以用于HTML文档的元素节点,把结果直接加为对应节点的子元素,通常而言,load方法加载后的数据是一个 HTML片段

$.get,$.post,$.getJSON:更加灵活,出去使用load方法的情况,大多数情况使用这2个方法

$.getJSON   相当于   $.get(url,args,function(){},"JSON");  这个方法

以下是jQuery实现Ajax 与 老方法的对比

html数据格式


xml传输格式

<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 url = this.href;
var method = "GET";
request.open(method,url);
request.send(null);
request.onreadystatechange = function(){
if(request.readyState == 4){
if(request.status == 200 || request.status == 304){
//1. 结果为XML的形式 所以需要responseXML来获取
var result = request.responseXML;
//2.结果不能直接使用, 必须先创建对应的节点,再把节点加入到details
/*目标格式为:
<h2><a href="mailto:andy@clearleft.com">Andy Budd</a></h2>
<a href="http://andybudd.com/">http://andybudd.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;

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>


json传输格式:

<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 url = this.href;
var method = "GET";
request.open(method,url);
request.send(null);
request.onreadystatechange = function(){
if(request.readyState == 4){
if(request.status == 200 || request.status == 304){
//1. 结果为XML的形式 所以需要responseXML来获取
var result = request.responseText;
var object = eval("("+ result +")")
//2.结果不能直接使用, 必须先创建对应的节点,再把节点加入到details
/*目标格式为:
<h2><a href="mailto:andy@clearleft.com">Andy Budd</a></h2>
<a href="http://andybudd.com/">http://andybudd.com/</a>
*/
var name = object.person.name;
var website = object.person.website;
var email = object.person.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>


注意:eval的用法:

(1)使用eval()方法,可以把一个字符串转化为本地的js代码来执行

var testStr = "alert('hello eval')" ;

eval(testStr);

(2)将字符串转化为对象来使用,必须加"("++")"

var jsonStr = "{"name":'zjx'}";

var testObject = eval("("+ jsonStr +")");

alert(testObject)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值