½¨Á¢XMLHttpRequest¶ÔÏó

¡¡¡¡utl.js

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:
function createXmlTree(node, indent) {

¡¡¡¡if (node == null)

¡¡¡¡return "";

¡¡¡¡var str = "";

¡¡¡¡switch (node.nodeType) {

¡¡¡¡case 1:    // Element

¡¡¡¡str += "<div class='element'><<span class='elementname'>" + node.nodeName + "</span>";

¡¡¡¡var attrs = node.attributes;

¡¡¡¡for (var i = 0; i < attrs.length; i++)

¡¡¡¡str += createXmlAttribute(attrs[i]);

¡¡¡¡if (!node.hasChildNodes())

¡¡¡¡return str + "/></div>";

¡¡¡¡str += "><br />";

¡¡¡¡var cs = node.childNodes;

¡¡¡¡for (var i = 0; i < cs.length; i++)

¡¡¡¡str += createXmlTree(cs[i], indent + 3);

¡¡¡¡str += "</<span class='elementname'>" + node.nodeName + "</span>></div>";

¡¡¡¡break;

¡¡¡¡case 9:    // Document

¡¡¡¡var cs = node.childNodes;

¡¡¡¡for (var i = 0; i < cs.length; i++)

¡¡¡¡str += createXmlTree(cs[i], indent);

¡¡¡¡break;

¡¡¡¡case 3:    // Text

¡¡¡¡if (!/^\s*$/.test(node.nodeValue))

¡¡¡¡str += "<span class='text'>" + node.nodeValue + "</span><br />";

¡¡¡¡break;

¡¡¡¡case 7:    // ProcessInstruction

¡¡¡¡str += "<?" + node.nodeName;

¡¡¡¡var attrs = node.attributes;

¡¡¡¡for (var i = 0; i < attrs.length; i++)

¡¡¡¡str += createXmlAttribute(attrs[i]);

¡¡¡¡str+= "?><br />"

¡¡¡¡break;

¡¡¡¡case 4:    // CDATA

¡¡¡¡str = "<div class='cdata'><![CDATA[<span class='cdata-content'>" +

¡¡¡¡node.nodeValue +

¡¡¡¡"</span>]" + "]></div>";

¡¡¡¡break;

¡¡¡¡case 8:    // Comment

¡¡¡¡str = "<div class='comment'><!--<span class='comment-content'>" +

¡¡¡¡node.nodeValue +

¡¡¡¡"</span>--></div>";

¡¡¡¡break;

¡¡¡¡case 10:

¡¡¡¡str = "<div class='doctype'><!DOCTYPE " + node.name;

¡¡¡¡if (node.publicId) {

¡¡¡¡str += " PUBLIC \"" + node.publicId + "\"";

¡¡¡¡if (node.systemId)

¡¡¡¡str += " \"" + node.systemId + "\"";

¡¡¡¡}

¡¡¡¡else if (node.systemId) {

¡¡¡¡str += " SYSTEM \"" + node.systemId + "\"";

¡¡¡¡}

¡¡¡¡str += "></div>";

¡¡¡¡// TODO: Handle custom DOCTYPE declarations (ELEMENT, ATTRIBUTE, ENTITY)

¡¡¡¡break;

¡¡¡¡default:

¡¡¡¡//alert(node.nodeType + "\n" + node.nodeValue);

¡¡¡¡inspect(node);

¡¡¡¡}

¡¡¡¡return str;

¡¡¡¡}

¡¡¡¡function inspect(obj) {

¡¡¡¡var str = "";

¡¡¡¡for (var k in obj)

¡¡¡¡str += "obj." + k + " = " + obj[k] + "\n";

¡¡¡¡window.alert(str);

¡¡¡¡}

¡¡¡¡function createXmlAttribute(a) {

¡¡¡¡return " <span class='attribname'>" + a.nodeName + "</span><span class='attribvalue'>=\"" + a.nodeValue + "\"</span>";

¡¡¡¡}

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡<HTML><HEAD><TITLE>Ajax test</TITLE>

¡¡¡¡<META http-equiv=Content-Type content="text/html; charset=gb2312">

¡¡¡¡<SCRIPT src="Ajax test_files/utl.js"></SCRIPT>

¡¡¡¡<LINK rev=stylesheet media=all href="Ajax test_files/Ajax.css" type=text/css

¡¡¡¡rel=stylesheet>

¡¡¡¡<SCRIPT>

¡¡¡¡//------------ XMLHttpObjÀà ----------------

¡¡¡¡function XMLHttpObject(url,Syne){

¡¡¡¡var XMLHttp=null

¡¡¡¡var o=this

¡¡¡¡this.url=url

¡¡¡¡this.Syne=Syne

¡¡¡¡this.sendData = function()

¡¡¡¡{

¡¡¡¡if (window.XMLHttpRequest) {

¡¡¡¡XMLHttp = new XMLHttpRequest();

¡¡¡¡} else if (window.ActiveXObject) {

¡¡¡¡XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");

¡¡¡¡}

¡¡¡¡with(XMLHttp){

¡¡¡¡open("GET", this.url, this.Syne);

¡¡¡¡onreadystatechange = o.CallBack;

¡¡¡¡send(null);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡ this.CallBack=function()

¡¡¡¡{

¡¡¡¡if (XMLHttp.readyState == 4) {

¡¡¡¡if (XMLHttp.status == 200) {

¡¡¡¡o.debugXML("readyState:" + XMLHttp.readyState + "<br/>")

¡¡¡¡o.debugXML("status :" + XMLHttp.status + "<br/>")

¡¡¡¡o.debugXML(" <div style='background:#ffc;margin-left:10px;border:1px solid #669;padding:3px'>" + createXmlTree(XMLHttp.responseXML,0) + "</div>")

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡this.getText=function()

¡¡¡¡{

¡¡¡¡if (XMLHttp==null) {return "»¹Ã»¼ÓÔØ XMLHttpRequest"}

¡¡¡¡if (XMLHttp.readyState==4) {return XMLHttp.responseText}

¡¡¡¡return XMLHttp.readyState

¡¡¡¡}

¡¡¡¡this.debugXML=function(log)

¡¡¡¡{

¡¡¡¡try{document.getElementById("XMLDebug").innerHTML+=log}

¡¡¡¡catch(e){}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡var XMLDoc1=new XMLHttpObject("tree.xml",true)

¡¡¡¡</SCRIPT>

¡¡¡¡<META content="MSHTML 6.00.3790.2706" name=GENERATOR></HEAD>

¡¡¡¡<BODY><SELECT

¡¡¡¡onchange='XMLDoc1.url=this.value;document.getElementById("XMLDebug").innerHTML=""'>

¡¡¡¡<OPTION value=tree.xml selected>tree.xml</OPTION> <OPTION

¡¡¡¡value=xtree.xsl>xtree.xsl</OPTION> <OPTION value=/feed.asp>Blog

¡¡¡¡Feed</OPTION></SELECT> <INPUT onclick=XMLDoc1.sendData() type=button value=XMLDoc1.sendData()> <INPUT onclick=alert(XMLDoc1.getText()) type=button value=XMLDoc1.getText()> <INPUT onclick="if (confirm('clear log?')) {document.getElementById('XMLDebug').innerHTML=''}" type=button value=ClearLog>

¡¡¡¡<DIV id=XMLDebug></DIV></BODY></HTML>

¡¡¡¡

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡HTML {

¡¡¡¡BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px

¡¡¡¡}

¡¡¡¡BODY {

¡¡¡¡BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px

¡¡¡¡}

¡¡¡¡BODY {

¡¡¡¡BACKGROUND: buttonface; FONT: Message-Box

¡¡¡¡}

¡¡¡¡FORM {

¡¡¡¡PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px

¡¡¡¡}

¡¡¡¡FIELDSET FIELDSET {

¡¡¡¡MARGIN: 5px

¡¡¡¡}

¡¡¡¡BUTTON {

¡¡¡¡MARGIN-LEFT: 5px

¡¡¡¡}

¡¡¡¡TEXTAREA {

¡¡¡¡WIDTH: 100%; HEIGHT: 200px

¡¡¡¡}

¡¡¡¡#out {

¡¡¡¡BORDER-RIGHT: threeddarkshadow 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: threeddarkshadow 1px solid; MARGIN-TOP: 5px; PADDING-LEFT: 3px; BACKGROUND: white; PADDING-BOTTOM: 3px; BORDER-LEFT: threeddarkshadow 1px solid; COLOR: black; PADDING-TOP: 3px; BORDER-BOTTOM: threeddarkshadow 1px solid; FONT-FAMILY: Verdana

¡¡¡¡}

¡¡¡¡#srcTextContainer {

¡¡¡¡DISPLAY: none

¡¡¡¡}

¡¡¡¡.element {

¡¡¡¡PADDING-LEFT: 16px; COLOR: blue

¡¡¡¡}

¡¡¡¡.elementname {

¡¡¡¡COLOR: darkred

¡¡¡¡}

¡¡¡¡.attribname {

¡¡¡¡COLOR: red

¡¡¡¡}

¡¡¡¡.attribvalue {

¡¡¡¡COLOR: blue

¡¡¡¡}

¡¡¡¡.text {

¡¡¡¡PADDING-LEFT: 16px; COLOR: windowtext

¡¡¡¡}

¡¡¡¡.cdata-content {

¡¡¡¡DISPLAY: block; PADDING-LEFT: 16px; BORDER-LEFT: gray 1px solid; COLOR: windowtext; FONT-FAMILY: Courier New; WHITE-SPACE: pre

¡¡¡¡}

¡¡¡¡.comment {

¡¡¡¡PADDING-LEFT: 16px; COLOR: blue

¡¡¡¡}

¡¡¡¡.doctype {

¡¡¡¡PADDING-LEFT: 16px; COLOR: blue

¡¡¡¡}

¡¡¡¡.comment-content {

¡¡¡¡DISPLAY: block; COLOR: gray; FONT-FAMILY: Courier New; WHITE-SPACE: pre

¡¡¡¡}

¡¡¡¡#XMLDebug {

¡¡¡¡BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #000 1px solid; MARGIN-TOP: 6px; PADDING-LEFT: 4px; FONT-SIZE: 12px; BACKGROUND: #fff; PADDING-BOTTOM: 4px; OVERFLOW: auto; BORDER-LEFT: #000 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #000 1px solid; HEIGHT: 400px

¡¡¡¡}