首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • ajax的getElementsByTagName问题(困了一晚上了)
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-03 20:25:08 楼主
    我使用asp从access数据库中取数据,用ajax在前台获取xml结果,但是使用getElementsByTagName怎么也拿不到节点的值,具体如下:
    前天的js
    JScript code
    if(xmlHttp.readyState == 4) { if(xmlHttp.status == 200) { alert(xmlHttp.responseText);//可以得到一个文档,如下面的图1 var xmlDOM = xmlHttp.responseXML; var picture = xmlDOM.getElementsByTagName("picture"); alert(picture.length);//输出为0 for(var i = 0;i < picture.length;i++) { alert(picture[i].getElementsByTagName("num").childNodes[0].nodeValue); } } }

    后台的asp页面
    <?xml version="1.0" encoding="gb2312"?>
    <!--#include file="conn.asp"-->
    <root>
        <%
        sql="select * from introduce where IntroducePic is not null"
        set rs=server.createobject("adodb.recordset")
        rs.open sql,conn,1,1
        do while not rs.eof
        %>
        <picture>   
          <num> <%=rs("IntroduceID")%> </num>
          <name> <%=rs("IntroduceName")%> </name>
          <picpath> <%=rs("IntroducePic")%> </picpath>
        </picture>
        <%
        rs.movenext
        loop
        rs.close
        set rs=nothing
        %>
    </root>
    图1
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-03 20:51:281楼 得分:0
    ding
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-03 21:01:552楼 得分:0
    我从IIS中直接浏览那个后台服务器页面,返回了一个xml文档,如下:
    XML code
    <?xml version="1.0" encoding="gb2312" ?> - <root> - <picture> <num>14</num> <name>九号公寓</name> <picpath>200843018431487373.jpg</picpath> </picture> - <picture> <num>15</num> <name>十号公寓</name> <picpath>200843018455087607.jpg</picpath> </picture> </root>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-03 22:20:323楼 得分:0
    今天先睡了,希望长假之后能搞定
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-03 22:33:514楼 得分:0
        if(xmlHttp.readyState == 4) {
            if(xmlHttp.status == 200) {
                var xmlDOM = xmlHttp.responseXML;
                var pictures = xmlDOM.documentElement.childNodes;
                for(var i = 0;i < pictures.length;i++)
                {
                  alert(pictures[i].getElementsByTagName("num")[0].firstChild.nodeValue);
                  alert(pictures[i].getElementsByTagName("name")[0].firstChild.nodeValue); 
                  alert(pictures[i].getElementsByTagName("picpath")[0].firstChild.nodeValue); 
                }

            }
        }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • eglic
    • 等级:
    发表于:2008-05-03 23:21:535楼 得分:0
    对XML操作用 XPath 来 selectNodes 更方便
    JScript code
    if(xmlHttp.readyState == 4) { if(xmlHttp.status == 200) { alert(xmlHttp.responseText);//可以得到一个文档,如下面的图1 var xmlDOM = xmlHttp.responseXML; var pictures = xmlDOM.selectNodes("//picture"); alert(picture.length);//输出为0 for(var i = 0;i < pictures.length;i++) { alert(pictures[i].selectSingleNode('./num').nodeValue; } } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 08:19:336楼 得分:0
    引用 4 楼 penglewen 的回复:
        if(xmlHttp.readyState == 4) {
            if(xmlHttp.status == 200) {
                var xmlDOM = xmlHttp.responseXML; 
                var pictures = xmlDOM.documentElement.childNodes;//在这块下面就不执行了,我怀疑我的xml文件有问题
                for(var i = 0;i  < pictures.length;i++) 
                { 
                  alert(pictures[i].getElementsByTagName("num")[0].firstChild.nodeValue);
                  alert(pictures[i].getElementsByTagN…
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 08:27:257楼 得分:0

    这个是alert(xmlHttp.responseText)输出的结果,我不知道格式是否正确阿?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 08:56:158楼 得分:0
    我试着读取一个相似的xml文件就可以lengh=2,我把编码改称utf-8了
    XML code
    <?xml version="1.0" encoding="utf-8"?> <root> <picture> <num>1</num> <name>henhao</name> <picpath>200843018431487373.jpg</picpath> </picture> <picture> <num>15</num> <name>shi</name> <picpath>200843018455087607.jpg</picpath> </picture> </root>
    但是换成读取asp文件就不行
    asp文件如下:
    HTML code
    <?xml version="1.0" encoding="utf-8"?> <!--#include file="conn.asp"--> <% session.codepage = 65001 %> <root> <% sql="select * from introduce where IntroducePic is not null" set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,1 do while not rs.eof %> <picture> <num><%=rs("IntroduceID")%></num> <picpath><%=rs("IntroducePic")%></picpath> </picture> <% rs.movenext loop rs.close set rs=nothing %> </root>
    不知道出错在那里
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • eglic
    • 等级:
    发表于:2008-05-04 10:11:029楼 得分:0
    session.codepage = 65001


    你是想用这个把文件的编码改成UTF-9吗?

    用Response.Charset="UTF-8"
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 16:21:1110楼 得分:0
    看着好像没有什么问题啊................
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 16:34:5411楼 得分:0
    getElementsByTagName("") 返回的是一个数组吧,楼主picture[i].getElementsByTagName("num").childNodes[0].nodeValue 这样写当然不行了!!
    给getElementsByTagName("num") 加一个读取索引,像4楼那样..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • showbo
    • 等级:
    发表于:2008-05-05 09:07:5612楼 得分:0
    引用 4 楼 penglewen 的回复:
        if(xmlHttp.readyState == 4) {
            if(xmlHttp.status == 200) {
                var xmlDOM = xmlHttp.responseXML; 
                var pictures = xmlDOM.documentElement.childNodes;
                for(var i = 0;i  < pictures.length;i++) 
                { 
                  alert(pictures[i].getElementsByTagName("num")[0].firstChild.nodeValue);
                  alert(pictures[i].getElementsByTagN…
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-05 12:24:1613楼 得分:0
    <!--#include file="conn.asp"-->
    <%
    Response.Charset="utf-8"
    response.ContentType="text/xml"
    strXML = " <?xml version=""1.0"" encoding=""utf-8""?>"
    strXML = strXML&" <root>"
        sql="select * from introduce where IntroducePic is not null"
        set rs=server.createobject("adodb.recordset")
        rs.open sql,conn,1,1
        do while not rs.eof
          strXML = strXML&" <picture>"
          strXML = strXML&" <num>"& rs("IntroduceID") &" </num>"
          strXML = strXML&" <picpath>"& rs("IntroducePic") &" </picpath>"
        strXML = strXML&" </picture>"
        rs.movenext
        loop
        rs.close
        set rs=nothing
    strXML = strXML" </root>"
    Response.Write strXML '这里就是返回的.
    %>
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved