XML
- XML是一種標(biāo)記語(yǔ)言僵控,很類似HTML姜性,其宗旨是用來傳輸數(shù)據(jù),具有自我描述性(固定的格式的數(shù)據(jù))鸟廓。
- HTML是來展現(xiàn)網(wǎng)頁(yè)的
- XML是把數(shù)據(jù)給用戶來用(存儲(chǔ)數(shù)據(jù)的)
<?xml versio = "1.0" encoding = "UTF-8"?>
<html>
<body>
<div>學(xué)習(xí)xml</div>
<name>itcast</name>
<age>18</age>
</body>
</body>
語(yǔ)法規(guī)則
- 1大州、必須有一個(gè)根元素续语。
- 2、可以自定義標(biāo)簽名厦画。
- 3疮茄、不可有空格滥朱、不可以數(shù)字或 .開頭、大小寫敏感
- 4力试、不可交叉嵌套
- 5徙邻、屬性雙引號(hào)
- 6、特殊符號(hào)要使用實(shí)體
- 7畸裳、注釋和HTML一樣
雖然可以描述和傳輸復(fù)雜數(shù)據(jù)缰犁,但是其解析過于復(fù)雜并且體積較大,所以現(xiàn)在開發(fā)已經(jīng)很少使用了怖糊。
JSON
即javaScript Object Notation 另一種輕量級(jí)的文本數(shù)據(jù)交換格式帅容,獨(dú)立與語(yǔ)言。
-
語(yǔ)法規(guī)則
- 1伍伤、數(shù)據(jù)在名稱/值對(duì)中
- 2并徘、數(shù)據(jù)由逗號(hào)分隔(最后一個(gè)健/值對(duì)不能帶逗號(hào))
- 3、花括號(hào)保存對(duì)象方括號(hào)保存數(shù)組
- 4扰魂、使用雙引號(hào)
JSON解析
JSON數(shù)據(jù)在不同語(yǔ)言進(jìn)行傳輸時(shí)麦乞,類型為字符串,不同的語(yǔ)言各自也都對(duì)應(yīng)有解析方法劝评,需要解析完成后才能讀取路幸。
1、Javascript解析方法
eavl()付翁、JSON對(duì)象、JSON.parse()晃听、JSON.stringify();
- 2百侧、PHP解析方法
json_encode()、json_decode()
var json = JOSN.stringify(obj) //對(duì)象轉(zhuǎn)json
var object = JOSN.parse(josn) //json轉(zhuǎn)對(duì)象
- eaval 可以將字符串解析成JS可以識(shí)別的語(yǔ)法
var str = 'sleret(1)';
eval('('+str+')');
結(jié)果 為 1
- JSON一轉(zhuǎn)換變成Obj
var json = '{"mane":"itcast","age":10 }';
var obj = eval('('+ '{"mane":"itcast","age":10 }'+')');
console.log(obj);
cc:ie6+快捷鍵 把js兼容放在里面
- 在PHP中解析JOSN
//數(shù)據(jù)是存在數(shù)據(jù)庫(kù)里能扒,從數(shù)據(jù)里取后往往是一個(gè)數(shù)組或?qū)ο?需要轉(zhuǎn)換成JOSN
$arr = array(
'name'=>'itcast',
'age'=>10
) ;
echo json_encode($arr);//轉(zhuǎn)換成josn
$obj = json_decode($json);//轉(zhuǎn)換成對(duì)象
echo $obj->name;//訪問對(duì)象屬性
$result=file_get_content('stars.json');//獲取文件
echo $result;
Ajax工具函數(shù)封裝
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ajax工具函數(shù)</title>
</head>
<body>
<script>
// 定義一個(gè)命名空間
var $ = {
params: function (args) { // 專門處理我們的數(shù)據(jù)
var o = '';
for(var k in args) {
o += k + '=' + args[k] + '&';
}
o = o.slice(0, -1);
return o;
// console.log(o);
},
ajax: function (options) {
// 初始化參數(shù)
var type = options.type || 'get';
var url = options.url || location.pathname;
// get 方式 url?key=val&key1=val1
// post 方式 xhr.send(key=val&key1=val1)
var data = this.params(options.data || {});
// var success = options.success || function () {console.log('回調(diào)函數(shù)不能為空')}
var success = options.success;
var xhr = new XMLHttpRequest;
if(type == 'get') { // 當(dāng)請(qǐng)求方式為get佣渴,參數(shù)放到url上
url = url + '?' + data;
data = null;
}
// 設(shè)置請(qǐng)求方式
xhr.open(type, url);
if(type == 'post') { // 當(dāng)請(qǐng)求方式為post,需要設(shè)置Content-Type
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
// 發(fā)送請(qǐng)求主體
xhr.send(data);
xhr.onreadystatechange = function () {
if(xhr.readyState == 4 && xhr.status == 200) {
// 調(diào)用回調(diào)函數(shù)并傳參
var result = JSON.parse(xhr.responseText);
success(result);
}
}
}
}
// 調(diào)用函數(shù)
$.ajax({
type: 'post',
url: 'demo.php',
data: {name: 'itcast', age: 10},
success: function (data) {
console.log(data);
}
});
function fn(arg1) {
// alert(arg1);
// arg1();
}
// fn(1);
// fn([1,2]);
// fn({name: 'itcast'});
var callback = function () {
alert(1);
}
fn(callback);
// for(var key in location) {
// console.log(key + '~~~~' + location[key]);
// }
</script>
</body>
</html>
- PHP文件
<?php
// 接收數(shù)據(jù)
// 以JSON方式返回
echo json_encode($_GET);
?>
補(bǔ)充
get數(shù)據(jù) 傳在url 后面
Conten-type 是設(shè)置send里面的類型
有g(shù)et 就不要Content-type