ajax怎么獲取json數據和xml數據


ajax如何的發哦json數據和xml數據

ajax使用方法就不多=說了,參照這篇https://www.cnblogs.com/shangrao/p/12861845.html

json和xml不同的地方是得到響應方法。

如需獲得來自服務器的響應,請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性

屬性 描述
responseText 獲得字符串形式的響應數據。
responseXML 獲得 XML 形式的響應數據。

xml文件

文件格式介紹:結構化數據

獲取xml文件方法

1.Js解析xml格式

2.根據xml文本內容創建xml對象

3.獲取元素節點的文本內容

4.獲取元素的屬性值

 

data.xml

<?xml version="1.0" encoding="utf-8"?>
<bookstore>
    <book>
        <name>三國演義</name>
        <category>文學</category>
        <desc>描述</desc>
    </book>    
    <book>
        <name>水滸傳</name>
        <category>文學</category>
        <desc>草寇or英雄豪傑</desc>
    </book>    
    <book>
        <name>西游記</name>
        <category>文學</category>
        <desc>妖魔鬼怪牛鬼蛇神什么都有</desc>
    </book>    
    <book>
        <name>紅樓夢</name>
        <category>文學</category>
        <desc>寶哥哥與林妹妹的愛情史</desc>
    </book>    
</bookstore>

HTML頁面

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json文件</title>
<script type="text/javascript">
    window.onload = function(){
        var btn = document.getElementById('btn');
        btn.onclick = function(){
            showBookInfo();
        }
        function showBookInfo(){
            document.getElementById('bookInfo').innerHTML = '';
            var xhr = null;
            if(window.XMLHttpRequest){
                xhr = new XMLHttpRequest();
            }else{
                xhr = new ActiveXObject('Microsoft.XMLHTTP');
            }
            console.log('第一步'+xhr.readyState);
            xhr.open('get','./data.xml');//xml文件位置
            console.log('第二步'+xhr.readyState);
            xhr.send(null);
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4 && xhr.status == 200){
                    var data = xhr.responseXML;//返回xml對象(所有內容--document)
                    
                    var bs = data.getElementsByTagName('bookstore')[0];//得到bookstores節點
                    console.log(bs);
                    var books = bs.getElementsByTagName('book');
                    var tag = '';
                    for(var i=0;i<books.length;i++){//循環遍歷內容 var book = books[i];
                        var name = book.getElementsByTagName('name')[0];
                        var category = book.getElementsByTagName('category')[0];
                        var desc = book.getElementsByTagName('desc')[0];
                        tag += '<tr><td>'+getNodeText(name)+'</td><td>'+getNodeText(category)+'</td><td>'+getNodeText(desc)+'</td></tr>';
                    }
                    var tbody = document.createElement('tbody');
                    tbody.innerHTML = tag;
                    document.getElementById('bookInfo').appendChild(tbody);
                }
            }
            
        
        }
    
    }
    //獲取文本節點內容
    function getNodeText(node){
        if(window.ActiveXObject){//IE
            return node.text;
        }else{//標准瀏覽器
            if(node.nodeType == 1){
                return node.textContent;
            }
        }
    }
</script>
</head>
<body>
    <input type="button" value="點擊" id="btn">
    <div>
        <table id="bookInfo">

        </table>
    </div>
</body>
</html>

 

json文件

文件格式介紹:JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它使得人們很容易的進行閱讀和編寫

json簡單說就是javascript中的對象和數組。{ } 這是對象, [ ] 這是數組。

獲取數組內容只需要arr[索引]就可以了。

獲取對象內容只需要 obj.屬性名 就可以了。

解析下面的數據,整個json 文件 我們給他聲明一個變量 叫datas。

datas 對象是可以放任何內容的,下面是有一個屬性 total,一個數組 date,一個鍵值對 obj。

獲取對象的值 直接 datas.total,就可以得到“4”了。

datas.data 就可以得到[....]一個數組了,數組有4個元素,這四個元素是四個不同的對象,obj.data[0],代表第一個數組,obj.data[0].name 就可以到第一個數組的name值 “三國演義”。

datas["adf"] 就可得到"aa"值。其實相當於數組,只不過下標可以自己去定義。

data.json

{
    "total":"4",
    "data":[ { "name":"三國演義",
            "category":"文學",
            "desc":"一個軍閥混戰的年代"
        },{
            "name":"水滸傳",
            "category":"文學",
            "desc":"草寇or英雄好漢"
        },{
            "name":"西游記",
            "category":"文學",
            "desc":"妖魔鬼怪牛鬼蛇神什么都有"
        },{
            "name":"紅樓夢",
            "category":"文學",
            "desc":"一個封建王朝的縮影" } ],
    "obj":{"adf":"aa"}
}

html頁面

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>json文件</title>
<script type="text/javascript">
    window.onload = function(){
        var btn = document.getElementById('btn');
        btn.onclick = function(){
            showBookInfo();
        }
        function showBookInfo(){
            var xhr = null;
            if(window.XMLHttpRequest){
                xhr = new XMLHttpRequest();
            }else{
                xhr = new ActiveXObject('Microsoft.XMLHTTP');
            }
            xhr.open('get','./data.json');
            xhr.onreadystatechange = function(){//回調函數
                if(xhr.readyState == 4 && xhr.status == 200){
                    var data = JSON.parse(xhr.responseText);//得到數據
                    console.log(data);//打印數據
                    var total = data.total;//得到 4 值
                    var list = data.data;//得到data數組
                    var tag = '';
                    for(var i=0;i<total;i++){
                        var book = list[i];
                        tag += '<tr><td>'+book.name+'</td><td>'+book.category+'</td><td>'+book.desc+'</td></tr>';
                    }
                    var tbody = document.createElement('tbody');
                    tbody.innerHTML = tag;
                    document.getElementById('bookInfo').appendChild(tbody);
                }
            }
            xhr.send(null);
        }
    
    }

</script>
</head>
<body>
    <input type="button" value="點擊" id="btn">
    <div>
        <table id="bookInfo">

        </table>
    </div>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM