JQuery + XML作為前后台數據交換格式實踐


JQuery + xml作為前后台數據交換

  JQuery提供良好的異步加載接口AJAX,可以局部更新頁面數據,

http://api.jquery.com/category/ajax/

  xml作為一種輕量數據格式,被瀏覽器js引擎普遍支持,同json格式,但是沒有json那么精簡。

  使用AJAX+xml數據格式來實現動態頁面,有以下好處:

1、 松耦合, 頁面HTML和數據徹底分離, 即表示層 和 數據層分開, 有利前台樣式定制。 不同於以往后台腳本嵌套HTML標簽,並輸出數據到標簽的合適位置, 來實現動態頁面,表示和數據攪合在一起。

2、 支持與RPC對接, 對於各種業務RPC(類似web service)可以整合到一個頁面上展示和配置, 例如一個個人網站頁面上, 顯示的天氣數據來自氣象部門, 日歷中待辦事項和存儲事項, 都是通過xml數據格式與中華萬年歷網站交互的。

3、 充分利用了xml格式好處, 層次化描述數據, 相比form表單提交的x-www-form-urlencode格式的數據要強的多。

4、 AJAX帶來和好處, 可以局部更新頁面, 不用form表單整體提交, 導致整個頁面重載。

 

XML前后台交互示例

   前台文件client.html完全有html js書寫,不包含任何PHP語法, 其實現功能,將一個XML字符串, 通過ajax發送后后台(server.php), 后台將受到的XML字符串原封不動再輸出到http響應中, 此時前台ajax的success事件之前, ajax客戶端收到響應的XML字符串,然后將其轉換為XML對象, 再調用success事件, 在事件處理函數中, 可以訪問此對象。

 

前台文件 client.html

<html>
<head> 
        <script type="text/javascript" src="./jquery.js"></script>
        <style>

        </style>
</head> 
<body>
        <h1>hello world!</h1>

         <script type='text/javascript'> 
         
            // 這里要使用拼接好的XML字符串
            var data = '<root><classCode>cellphone</classCode><city>GuangDong</city></root>'; 
            $.ajax({
                type: "POST",
                url: "/xmlServer.php",
                
                // data sent is xml
                contentType: "application/xml; charset=utf-8",
                // Post 方式,data參數不能為空"",
                //如果不傳參數,也要寫成"{}",否則contentType將不能附加在Request Headers中。
                data: data, 
                
                // data in response will expected xml
                dataType: "xml",
                anysc: false,
                success: function (result) { 
                    $("h1").text(result.getElementsByTagName("city")[0].childNodes[0].nodeValue) 
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(errorThrown + ':' + textStatus); // 錯誤處理
                }
            }); 
        </script>
</body>
</html>

 

后台文件 server.php

<?php
// 將客戶端發送的XML數據原樣發送回去
//"<root><symbol>IBM</symbol><price>120</price></root>";  
echo $HTTP_RAW_POST_DATA; 
?>

 


免責聲明!

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



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