1 <html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script language ="javascript" type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}
}
function startRequest()
{
createXMLHttpRequest();
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.open("GET","simpleResponse.xml",true);
xmlHttp.send(null);
}
function handleStateChange()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
var addrField = document.getElementById("TextBox1");
var root =xmlHttp.responseXML;
var addrsElem = root.getElementsByTagName("addresses")[0];
var firstAddr = addrsElem.getElementsByTagName("address")[0];
var addrText = fistAddr.firstChild;
var addrValue = addrText.nodeValue;
//addrField.innerHTML=addrValue;
addrField.value = addrValue;
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div >
<a href="javascript:startRequest()">ok</a>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
</form>
</body>
</html>
2 simpleResponse.xml:
<?xml version="1.0" encoding="utf-8" ?>
<card>
<fullname>Sean Kelly</fullname>
<org>SK Consulting</org>
<emailaddrs>
<address type='work'>kelly@seankelly.biz</address>
<address type='home' pref='1'>kelly@seankelly.tv</address>
</emailaddrs>
<telephones>
<tel type='work' pref='1'>+1 214 555 1212</tel>
<tel type='fax'>+1 214 555 1213</tel>
<tel type='mobile'>+1 214 555 1214</tel>
</telephones>
<addresses>
<address type='work' format='us'>1234 Main StSpringfield, TX 78080-1216</address>
<address type='home' format='us'>5678 Main StSpringfield, TX 78080-1316</address>
</addresses>
<urls>
<address type='work'>http://seankelly.biz/</address>
<address type='home'>http://seankelly.tv/</address>
</urls>
</card>
这样取值怎么出错呢?望高手指教..
另外想问下 如果用json怎么做?
用ajax库来做吧,prototype、jquery等!
这里我建议你下载一本叫做Ajax高级编程的书来看下,你的问题主要存在于
var addrField = document.getElementById("TextBox1");
var root =xmlHttp.responseXML;
var addrsElem = root.getElementsByTagName("addresses")[0];
var firstAddr = addrsElem.getElementsByTagName("address")[0];
var addrText = fistAddr.firstChild;
var addrValue = addrText.nodeValue;
//addrField.innerHTML=addrValue;
addrField.value = addrValue;
这里,这里是解析返回的XML,这里解析的一般方式是DOM解析,也就是xmlHttp.responseXML,这里返回的是一个XML文档的对象,这个文档对象会生成一个相应的DOM树,然后再循环的去判断取值。其次要说的一点这里一点要注意IE和其他浏览器的写法,IE支持自己的私有属性写法和DOM2的标准写法。
关于第二点你说打JSON。那么你需要返回的就应该是类似如下的格式:
{a:"我是测试一",b":我是测试二",c:"我是测试三"},也就是你从服务器端必须要返回的是这样一个对象,那么现在在你的回调函数中就有 var obj=xmlHttp.responseText;现在在js里就可以如下来写var a=obj[a];var b=obj[b]...
当然这里最好是使用foreach来解析
foreach(var key in obj){
var a=obj[key];//这里来解析
}