原生ajax练习-post&xml

Posted 暗惧者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原生ajax练习-post&xml相关的知识,希望对你有一定的参考价值。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<style>
    h2 {color: #555; }
    .p1 {color: #f99; }
    .p2 {color: #9f9; }
    .p3 {color: #99f; }



</style>
<ul id="ul">
    <li>
        <p class="p4"></p>
        <h2></h2>
        <p class="p1"></p>
        <p class="p2"></p>
        <p class="p3"></p>
    </li>
</ul>
</body>
</html>
<script>
    window.onload = function() {
        var xhr = null;
        if(window.XMLHttpRequest){
            xhr = new XMLHttpRequest();
        }else{
            xhr = new ActiveXObject(Microsoft.XMLHTTP);
        }

        var url = xml/1.xml?;
        var para = ?_t=+new Date().getTime();//传递到send()当中去,不会有缓存


        // xhr.setRequestHeader(‘Content-Type‘,‘application/x-form-www-urlencoded‘)
        // Failed to execute ‘setRequestHeader‘ on ‘XMLHttpRequest‘: The object‘s state must be OPENED.
        
        
        xhr.open(post,url,true);//url中不再包含参数
        xhr.setRequestHeader(Content-Type,application/x-form-www-urlencoded)//必须位于open之后,send之前
        xhr.send(para);
        xhr.onreadystatechange = function () {
            if(xhr.readyState == 4 && xhr.status == 200 ) {
                //得到的XML是一个对象,这个对象有各种属性和方法
                var data = xhr.responseXML;
                var NOVEL = data.getElementsByTagName(NOVEL)[0];
                var books = NOVEL.getElementsByTagName(book);
                var len = books.length;
                //console.log(NOVEL);
                var str = ‘‘;
                for(var i=0;i<len;i++) {
                    str+= <li><h2>+getNodeText(books[i].getElementsByTagName(name)[0])+</h2>;
                    str+= <p class="p4">+getNodeText(books[i].getElementsByTagName(author)[0])+</p>;
                    str+= <p class="p2">+getNodeText(books[i].getElementsByTagName(publish_time)[0])+</p>;
                    str+= <p class="p3">+getNodeText(books[i].getElementsByTagName(publish_time)[0])+</p>;
                    str+= <p class="p1">+getNodeText(books[i].getElementsByTagName(publish_time)[0])+</p></li>;
                }
                document.getElementById(ul).innerHTML = str;
            }
        }

        function getNodeText(node){
            if(window.ActiveXObject){//IE
                return node.text;
            }else{//标准浏览器
                if(node.nodeType == 1){
                    return node.textContent;
                }
            }
        }

    }
</script>

 

<?xml version="1.0" encoding="utf-8"?>
<bookstore>
    <NOVEL>
        <book>
            <name>Herry Porter</name>
            <author>J.K Rolling</author>
            <publish_time>2058</publish_time>
        </book>
        <book>
            <name>三国演义</name>
            <author>罗贯中</author>
            <publish_time>1984</publish_time>
        </book>
        <book>
            <name>水浒传</name>
            <author>施耐庵</author>
            <publish_time>2501</publish_time>
        </book>
        <book>
            <name>红楼梦</name>
            <author>高雪琴</author>
            <publish_time>1865</publish_time>
        </book>
    </NOVEL>
    <MATH>
        <book>
            <name>圆周率</name>
            <author>猪无能</author>
            <publish_time>1869</publish_time>
        </book>
        <book>
            <name>勾股定理</name>
            <author>沙悟净</author>
            <publish_time>1875</publish_time>
        </book>
        <book>
            <name>相对论</name>
            <author>唐玄奘</author>
            <publish_time>1886</publish_time>
        </book>
    </MATH>
</bookstore>

  

以上是关于原生ajax练习-post&xml的主要内容,如果未能解决你的问题,请参考以下文章

HTML-封装原生Ajax

初学者必读原生AJAX-异步的javaScript和XML

js 原生手写AJAX

原生ajax详解

Ajax get/post 方法封装

原生JS--Ajax