您的位置:首页 > 其它

以XML格式传输数据 (1)--Ajax学习笔记

2007-12-11 19:58 453 查看
Ajax

可能您是在刚认识了Ajax的核心对象XMLHttpRequest时才认为Ajax中的XML是怎么回事,或许你肯定它就是Ajax中的x ,但是实际上它和XML没有什么直接的关系.这都与它的名字有很大的关系,XMLHttpRequest,而且是出现在Ajax里面那肯定就是和XML有关了.其实在大多数Ajax应用中XML用的并不是特别多,主要还都是用名/值对进行传值,下面来介绍下如何使用XML格式在Ajax中进行传递数据.

首先,从客户端把数据传递到服务器,Ajax应用中基本上都是用文本的方式来直接传递请求参数,如:

清单 1. 使用普通文本发送名/值对function sendMessage() {
var firstName = document.getElementById("firstName").value;
var lastName = document.getElementById("lastName").value;
var street = document.getElementById("street").value;
var city = document.getElementById("city").value;
var state = document.getElementById("state").value;
var zipCode = document.getElementById("zipCode").value;

var url = "/scripts/saveAddress.php?firstName=" + escape(firstName) +
"&lastName=" + escape(lastName) + "&street=" + escape(street) +
"&city=" + escape(city) + "&state=" + escape(state) +
"&zipCode=" + escape(zipCode);

xmlHttp.open("GET", url, true);

xmlHttp.onreadystatechange = confirmUpdate;

xmlHttp.send(null);
}

上面的例子就是直接把参数添加在url后用 ?paramName1=value2¶mName2=value2的形式来传递数据,

这样做的好处是浏览器和服务器只需要把参数当作普通文本进行处理,速度会比较快,不需要进行格式转换.

下面来看在Ajax应用如何用XML格式来传递参数到服务器,看看下面的例子;

清单 2. 用 XML 发送名/值对
function sendMessage() {
var firstName = document.getElementById("firstName").value;
var lastName = document.getElementById("lastName").value;
var street = document.getElementById("street").value;
var city = document.getElementById("city").value;
var state = document.getElementById("state").value;
var zipCode = document.getElementById("zipCode").value;

var xmlString = "<profile>" +
" <firstName>" + escape(firstName) + "</firstName>" +
" <lastName>" + escape(lastName) + "</lastName>" +
" <street>" + escape(street) + "</street>" +
" <city>" + escape(city) + "</city>" +
" <state>" + escape(state) + "</state>" +
" <zip-code>" + escape(zipCode) + "</zip-code>" +
"</profile>";


var url = "/scripts/saveAddress.php";

xmlHttp.open("POST", url, true);

xmlHttp.setRequestHeader("Content-Type", "text/xml");

xmlHttp.onreadystatechange = confirmUpdate;

xmlHttp.send(xmlString);
}

现在您应该知道是怎么回事了,其实在Ajax传递XML真的显得很笨拙,它需要固定的XML格式,以及多余的字符,还要把请求格式给设置成(text/xml),而且在传递的时候并不是象在传递普通文本一样放在URL后面传递,而是由send方法亲自传递到服务器,服务器还要把它们以XML格式进行分析处理,然后做出响应! !真是废时又废力,所以说不推荐使用XML传递数据到服务器,除非 服务器它只接受XML类型!

下次我们看看另一种情况,从服务器发出XML响应信息!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: