首页 新闻 会员 周边

ajax关于数据转换的问题

0
悬赏园豆:15 [已关闭问题]

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怎么做?

问题补充: 我想知道 错误 在哪里 ...至于jquery我还不会用 有可能是content type的问题,怎么加上content type 望高手 指教一二
lushang的主页 lushang | 初学一级 | 园豆:90
提问于:2009-03-08 10:42
< >
分享
其他回答(1)
0

用ajax库来做吧,prototype、jquery等!

5yplan | 园豆:1330 (小虾三级) | 2009-03-09 01:06
0

这里我建议你下载一本叫做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];//这里来解析

}

西越泽 | 园豆:10775 (专家六级) | 2009-03-13 13:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册