当前位置: 首页 > 图文教程 > 网络编程 > AJAX技术 > 建立XMLHttpRequest对象

AJAX技术
自己动手封装的 ajax
Ajax 对象 包含post和get两种异步传输方式
Ajax 超时检查脚本
AJAX 简介及入门实例
ajax 开发守则 10条说明
Ajax 返回字符串的过滤实现代码
Ajax 程序开发中常见问题
AJAX 验证框架13个
ajax 入门基础之 XMLHttpRequest对象总结
基于AJAX的分页类实现代码
如何在Asp.net中使用HtmlArea编辑器
使用 jQuery 简化 Ajax 开发
ASP.NET 与 Ajax 的实现方式
AJAX技术介绍
Ajax程序设计入门
学习Ajax教程,详细了解Get与Post
关于Ajax responseText 的一点阐述
ajax中文乱码解决方法
AJAX中文问题总结
AJAX无刷新更新数据

AJAX技术 中的 建立XMLHttpRequest对象


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-13   浏览: 33 ::
收藏到网摘: n/a

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
}