zoukankan      html  css  js  c++  java
  • javascript Ajax系列一:通过Ajax获得XML格式的响应数据

    一、Ajax简介

      Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不刷新整个网页的情况下,对网页实现部分更新。

    二、Ajax数据格式

      使用Ajax方式向服务器发送请求之后,服务器会给客户端发送请求数据。使用Ajax时,可以通过XMLHttpRequest对象的属性responseXML和responseText来获取服务器响应的数据。从responseXML取得是XMldocument对象,而从responseText属性取得的数据需要自己判断格式并解析。

    三、从XML文档中获取数据并转换为HTML

      XMLHttpRequest对象的reponseXML属性返回的XML属性会被自动解析成一个可以定位的XML格式的DOM对象,可以通过DOM方法在其中定位节点和获取数据。

    例子如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="UI._default" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>Ajax</title>
    
    <style style="text/css">
        body {
            font-family:Arial,Helvetica,sans-serif;
        }
    
        .book {
            border-top:1px solid #ccc;
            padding:10px 5px;
            
        }
       .book h2 {
           margin:0;
           font-size:2em;
            }
            .book .author {
                margin:0;
                font-weight:bold;
                font-size:1em;
            }
    
            .book p {
    
                margin:0;
            }
       
        
    
    
    
    
    
        
    </style>
    
    <script>
        window.onload = function ()
        {
            var xmr;
            //创建XMLHttprRequest对象
            if (window.XMLHttpRequest) {
                xmr = new XMLHttpRequest();
            }
            else {
                try{
                    xmr=new ActiveXObject("MSXML.XMLHTTP6.0")
                } catch (e) { }
    
                try {
                    xmr = new ActiveXObject("MSXML.XMLHTTP");
                }catch(e){}
            }
    
            //为按钮添加事件处理
            var btn = document.getElementById("btn");
            btn.onclick = function ()
            {
    
                //如果成功创建XMLHttpRequest对象实例,则通过对象向服务器发出请求
                if (xmr)
                {
                    xmr.open("GET", "Books.xml", true);
                    xmr.onreadystatechange = function ()
                    {
                       // debugger;
                        if (xmr.readyState == 4)
                        {
                            //解析XML文档构造HTML
                            
                            var doc = xmr.responseXML.documentElement;//注:responseXML 获得XML格式的响应数据
                            var books = doc.getElementsByTagName("book");
                            var container = document.getElementById("content");
                            
    
    
                            var book, title, author, description, text;
    
                            for (var i = 0; i < books.length; i++)
                            {
                                //创建Div作为书籍数据的容器
                                book = document.createElement("div");
                                book.className = "book";
    
                                //创建h2存放书籍标题
                                title = document.createElement("h2");
                                text = document.createTextNode(books[i].childNodes[1].firstChild.data);
    
                                title.appendChild(text);
                                book.appendChild(title);
    
                                //创建p存放作者
                                author = document.createElement("p");
                                author.className = "author";
    
                                title = document.createTextNode(books[i].childNodes[3].firstChild.data);
    
                                author.appendChild(title);
                                book.appendChild(author);
    
                                //创建p存放内容简介
                                description = document.createElement("p");
                                title = document.createTextNode(books[i].childNodes[5].firstChild.data);
    
                                description.appendChild(title);
                                book.appendChild(description);
    
                                //将创建的Div节点加入到页面
                                container.appendChild(book);
                            }
    
    
                        }
    
                    }
                    xmr.send();
    
                }
    
    
            }
    
        }
    </script>     
    
    </head>
    <body>
        <div id="content"></div>
        <input id="btn" type="button" value="Ajax获取数据" />              
    </body>
    </html>
    
     
    

     XML文档

    <?xml version="1.0" encoding="utf-8" ?>
    <root>
      <book>
        <title>呐喊</title>
        <author>鲁迅</author>
        <description>"呐喊"中的小说,以振聋发聩的气势...</description>
      </book>
      <book>
        <title>追风筝的人</title>
        <author>卡勒德.胡赛尼</author>
        <description>12岁的阿富汗富家少爷阿米尔与仆人哈桑情同手足...</description>
      </book>
    </root>
    
  • 相关阅读:
    HCIE_交换篇_ARP
    HCIE_交换篇_MAC地址漂移
    ubuntu19+nextcloud
    HCIE_交换篇_MAC地址
    华三交换机恢复出厂设置
    光纤相关
    华三防火墙实用操作
    如何逼自己成为一个上进的人?
    ubuntu16安装squid代理服务器
    李敖
  • 原文地址:https://www.cnblogs.com/YanYongSong/p/4702189.html
Copyright © 2011-2022 走看看