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; ?>