传输格式

三种: xml, json, html

HTML:

实现:

andy.html:  (返回的是: 这是html格式的数据)

<h2><a href="andy@163.com">Andy Budd</a></h2>
<a href="http://andybudd.com">http://andybudd.com</a>

jeremy.html:  (返回的是: 这是html格式的数据)

<h2><a href="jeremy@163.com">Jeremy</a></h2>
<a href="http://jeremy.com">http://jeremy.com</a>

richard.html:  (返回的是: 这是html格式的数据)

<h2><a href="richard@163.com">Richard</a></h2>
<a href="http://richard.com">http://richard.com</a>

index.jsp:

<script type="text/javascript">
        window.onload = function() {
            var aNode = document.getElementsByTagName("a");
            for (var i=0; i<aNode.length; i++) {
                aNode[i].onclick = function() {
                    var request = new XMLHttpRequest();
                    var url = this.href + "?time = " + new Date();
                    var method = "GET";
                    request.open(method, url);
                    request.send(null);
                    request.onreadystatechange = function() {
                        if (request.readyState == 4) {
                            if (request.status == 200 || request.status == 304) {
                                document.getElementById("details").innerHTML = request.responseText;
                            }
                        }
                    }
                    return false;
                }
            }
        }
    </script>

<body>
    <h2>People</h2>    
    <ul>
        <li><a href="files/andy.html">andy</a></li>
        <li><a href="files/richard.html">richard</a></li>
        <li><a href="files/jeremy.html">jeremy</a></li>
    </ul>
    <!-- 实现三个超链接的Ajax, 将结果放在下面的区域 -->
    <div id="details"></div>
  </body>

测试:

总结:

 

XML:

index.jsp:

<script type="text/javascript">
        window.onload = function() {
            var aNode = document.getElementsByTagName("a");
            for (var i=0; i<aNode.length; i++) {
                aNode[i].onclick = function() {
                    var request = new XMLHttpRequest();
                    var url = this.href + "?time = " + new Date();
                    var method = "GET";
                    request.open(method, url);
                    request.send(null);
                    request.onreadystatechange = function() {
                        if (request.readyState == 4) {
                            if (request.status == 200 || request.status == 304) {
                                // 结果为xml格式, 使用responseXML获取
                                var result = request.responseXML;
                                // 结果不能直接使用, 必须创建对应的节点, 再把节点加入到#details中
                                /* 转换后的格式:
                                <h2><a href="andy@163.com">andy</a></h2>
                                <a href="http://andy.com">http://andy.com</a>
                                */
                                var name = result.getElementsByTagName("name")[0].firstChild.nodeValue;
                                var website = result.getElementsByTagName("website")[0].firstChild.nodeValue;
                                var email = result.getElementsByTagName("email")[0].firstChild.nodeValue;
                                alert(name);
                                alert(website);
                                alert(email);
                            }
                        }
                    }
                    return false;
                }
            }
        }
    </script>

<body>
    <h2>People</h2>   
    <ul>
        <li><a href="files/andy.xml">andy</a></li>
        <li><a href="files/richard.xml">richard</a></li>
        <li><a href="files/jeremy.xml">jeremy</a></li>
    </ul>
    <!-- 实现三个超链接的Ajax, 将结果放在下面的区域 -->
    <div id="details"></div>
  </body>

andy.xml:

<?xml version="1.0" encoding="UTF-8"?>
<details>
    <name>Andy</name>
    <website>website:http://andy.com</website>
    <email>andy@163.com</email>
</details>

测试:

返回XML格式的文件:

修改:

if (request.status == 200 || request.status == 304) {
    // 结果为xml格式, 使用responseXML获取
    var result = request.responseXML;
    // 结果不能直接使用, 必须创建对应的节点, 再把节点加入到#details中
    /* 转换后的格式:
    <h2><a href="andy@163.com">andy</a></h2>
    <a href="website:http://andy.com">http://andy.com</a>
    */
    var name = result.getElementsByTagName("name")[0].firstChild.nodeValue;
    var website = result.getElementsByTagName("website")[0].firstChild.nodeValue;
    var email = result.getElementsByTagName("email")[0].firstChild.nodeValue;
   
    // 创建节点, 放入对应的内容 <h2><a href="andy@163.com">andy</a></h2>
    // 创建a节点及其属性, 文本
    var aNode1 = document.createElement("a");    // 创建a节点
    aNode1.appendChild(document.createTextNode(name));    // a节点的文本
    aNode1.href = email;    // a节点的href
   
    // 创建<h2>节点
    var h2Node = document.createElement("h2");    // 创建h2节点
    // 把a节点放入h2节点
    h2Node.appendChild(aNode1);
   
    // <a href="website:http://andy.com">http://andy.com</a>
    var aNode2 = document.createElement("a");
    aNode2.appendChild(document.createTextNode(website));
    aNode2.href = website;
   
    // 把上面创建的h2节点和a节点放入#details的节点中
    var div = document.getElementById("details");
    div.appendChild(h2Node);
    div.appendChild(aNode2);
}

测试:

重复了!

测试:

JSON格式: 经常使用的一种格式(重点)

简单范例: 展示JSON数据的调用

testJson.html:

<script type="text/javascript">
        // Json格式是原生的javascript格式, 就像是一个js对象一样
        var jsonObject = {
            // 属性
            "name": "atguigu",
            "age": 12,
            "address": {
                "city": "BeiJing",
                "school": "尚硅谷"
            },
            // 方法
            "teaching": function() {
                alert("Java, Android,,,,");
            }
        };
        // 调用属性和方法
        alert(jsonObject.name);
        alert(jsonObject.address.city);
        jsonObject.teaching();
    </script>

----------------------------

// json字符串
        var jsonStr = "{'name': 'atguigu'}";
        alert(jsonStr.name);    // out: undefined

---------------------------

// 把json字符串转换成json对象, 使用eval()方法: 执行字符串里面的内容

var testObject = eval("(" + jsonStr + ")");       
alert(testObject.name);    // out: atguigu

json格式测试:

// 结果为json字符串格式, 使用responseText获取
                                var result = request.responseText;
                                var jsonObject = eval("(" + result + ")");
                               
                                // 结果不能直接使用, 必须创建对应的节点, 再把节点加入到#details中
                                /* 转换后的格式:
                                <h2><a href="andy@163.com">andy</a></h2>
                                <a href="website:http://andy.com">http://andy.com</a>
                                */
                                var name = jsonObject.person.name;
                                var website = jsonObject.person.website;
                                var email = jsonObject.person.email;

下面同xml创建节点

测试:

 

 

posted @ 2017-03-10 18:55  半生戎马,共话桑麻、  阅读(143)  评论(0)    收藏  举报
levels of contents