您的位置:首页 > 其它

处理服务器响应

2009-02-04 11:26 113 查看
实例,说明XMLHttpRequest 对象怎样向服务器发送请求,以及怎样用javaScript处理服务器响应。

(没有使用动态服务器来处理响应已经提供实时响应,只是用简单的文本文件来模拟服务器响应)

3.1 处理服务器响应

XMLHttpRequest对象提供了两个可以用来访问服务器响应的属性。第一个属性responseText将响应提供为一个串,第二个属性responseXML将响应提供为一个XML对象。一些简单的用例就很适合按简单文本来获取响应,如将响应显示在警告框中,或者响应只是指示成功还是失败的词。

文本实际上是父元素的一个子节点,所以可以使用firstChild属性来访问address元素的文本节点。有了文本节点后,可以引用文本节点的nodeValue属性来得到文本。

代码清单3-5 dynamicContent.xml

<?xml version="1.0" encoding="UTF-8"?>

<properties>

<property>

<address>812 Gwyn Ave</address>

<price>$100,000</price>

<comments>Quiet, serene neighborhood</comments>

</property>

<property>

<address>3308 James Ave S</address>

<price>$110,000</price>

<comments>Close to schools, shopping, entertainment</comments>

</property>

<property>

<address>98320 County Rd 113</address>

<price>$115,000</price>

<comments>Small acreage outside of town</comments>

</property>

</properties>

代码清单3-6 dynamicContent.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Dynamically Editing Page Content</title>

<script type="text/javascript">

var xmlHttp;

function createXMLHttpRequest() {

if (window.ActiveXObject) {

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

}

else if (window.XMLHttpRequest) {

xmlHttp = new XMLHttpRequest();

}

}

function doSearch() {

createXMLHttpRequest();

xmlHttp.onreadystatechange = handleStateChange;

xmlHttp.open("GET", "dynamicContent.xml", true);

xmlHttp.send(null);

}

function handleStateChange() {

if(xmlHttp.readyState == 4) {

if(xmlHttp.status == 200) {

clearPreviousResults();

parseResults(); 软件开发网 www.mscto.com

}

}

}

function clearPreviousResults() {

var header = document.getElementById("header");

if(header.hasChildNodes()) {

header.removeChild(header.childNodes[0]);

}

var tableBody = document.getElementById("resultsBody");

while(tableBody.childNodes.length > 0) {

tableBody.removeChild(tableBody.childNodes[0]);

}

}

function parseResults() {

var results = xmlHttp.responseXML;

var property = null;

var address = "";

var price = "";

var comments = "";

var properties = results.getElementsByTagName("property");

for(var i = 0; i < properties.length; i ) {

property = properties[i];

address = property.getElementsByTagName("address")[0].firstChild.nodeValue;

price = property.getElementsByTagName("price")[0].firstChild.nodeValue;

comments = property.getElementsByTagName("comments")[0]

.firstChild.nodeValue;

addTableRow(address, price, comments);

}

var header = document.createElement("h2");

var headerText = document.createTextNode("Results:");

header.appendChild(headerText);

document.getElementById("header").appendChild(header);

document.getElementById("resultsTable").setAttribute("border", "1");

}

function addTableRow(address, price, comments) {

var row = document.createElement("tr");

var cell = createCellWithText(address);

row.appendChild(cell);

cell = createCellWithText(price);

row.appendChild(cell);

cell = createCellWithText(comments);

row.appendChild(cell);

document.getElementById("resultsBody").appendChild(row);

}

function createCellWithText(text) {

var cell = document.createElement("td");

var textNode = document.createTextNode(text);

cell.appendChild(textNode);

return cell;

}

</script>

</head>

<body>

<h1>Search Real Estate Listings</h1>

<form action="#">

Show listings from

<select>

<option value="50000">$50,000</option>

<option value="100000">$100,000</option>

<option value="150000">$150,000</option>

</select>

to

<select>

<option value="100000">$100,000</option>

<option value="150000">$150,000</option> 软件开发网 www.mscto.com

<option value="200000">$200,000</option>

</select>

<input type="button" value="Search" onclick="doSearch();"/>

</form>

<span id="header"> 软件开发网 www.mscto.com

</span>

<table id="resultsTable" width="75%" border="0">

<tbody id="resultsBody">

</tbody> 软件开发网 www.mscto.com

</table>

</body>

</html>

软件开发网 www.mscto.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐