服务器如何返回批量的复合数据给客户端? 复合数据:一个数据有多个属性 批量复合数据:有多个复合数据 —— 二维数组 |
方式1:用text/plain格式 101#三星#35.5#1.jpg@102#闪迪#34.5#2.jpg@金士顿#... 好处:简单 不足:不易读取、很容易出错 |
方式2:用text/html格式 <tr><td>101</td><td>三星</td><td>35.5</td></tr> <tr><td>102</td><td>闪迪</td><td>35.5</td></tr> <tr><td>103</td><td>金士顿</td><td>35.5</td></tr> 好处:情形,方便使用 tbody.innerHTML = xhr.responseText 不足:把数据和格式混在一起,限制了数据的应用场合 |
方式3:用application/xml格式 <productList> <product pid="101"> <pname>三星</pname> <price>35.5</price> <pic>1.jpg</pic> </product> <product pid="102"> <pname>闪迪</pname> <price>34.5</price> <pic>2.jpg</pic> </product> </ productList> 好处:是纯数据,不附带任何的显示格式限制 不足:太复杂了,阅读和解析都太麻烦 |
方式3:用application/json格式 [ { "pid":"101", "pname":"三星", "price":35.5, "pic":"1.jpg" }, { "pid":"102", "pname":"闪迪", "price":34.5, "pic":"2.jpg" } ] 有点:简单、易于阅读,处理速度快! |
使用XHR接收五种响应
(1)text/plain
服务器端:
header('Content-Type: text/plain');
echo 'succ';
客户端:
if(xhr.responseText==='succ'){ ... }
(2)text/html
服务器端:
header('Content-Type: text/html');
echo "<tr><td>$data</td></tr>";
客户端:
tbody.innerHTML = xhr.responseText
(3)application/javascript
服务器端:
header('Content-Type: application/javascript');
echo "alert($data); f1(); f2($data)";
客户端:
eval( xhr.responseText )
(4)application/xml
服务器端:
header('Content-Type: application/xml');
echo "<bookList><book>$b</book></bookList>";
客户端:
var document = xhr.responseXML
(5)application/json
服务器端:
header('Content-Type: application/json');
//echo "[ {"bname":"","price":35.5},{} ]";
$list = ...;
echo json_encode($list);
客户端:
var obj = JSON.parse( xhr.responseText ) // JSON格式的字符串解析为JS对象
var obj = {ename:'Tom', age: 20}; var str = JSON.stringify(obj); // 把JS对象编码为JSON字符串 |