XML
- XML是一種標(biāo)記語言,很類似HTML,其宗旨是用來傳輸數(shù)據(jù),具有自我描述性(固定的格式的數(shù)據(jù))。
- HTML是來展現(xiàn)網(wǎng)頁的
- XML是把數(shù)據(jù)給用戶來用(存儲數(shù)據(jù)的)
<?xml versio = "1.0" encoding = "UTF-8"?>
<html>
<body>
<div>學(xué)習(xí)xml</div>
<name>itcast</name>
<age>18</age>
</body>
</body>
語法規(guī)則
- 1、必須有一個根元素。
- 2、可以自定義標(biāo)簽名。
- 3、不可有空格、不可以數(shù)字或 .開頭、大小寫敏感
- 4、不可交叉嵌套
- 5、屬性雙引號
- 6、特殊符號要使用實體
- 7、注釋和HTML一樣
雖然可以描述和傳輸復(fù)雜數(shù)據(jù),但是其解析過于復(fù)雜并且體積較大,所以現(xiàn)在開發(fā)已經(jīng)很少使用了。
JSON
即javaScript Object Notation 另一種輕量級的文本數(shù)據(jù)交換格式,獨立與語言。
-
語法規(guī)則
- 1、數(shù)據(jù)在名稱/值對中
- 2、數(shù)據(jù)由逗號分隔(最后一個健/值對不能帶逗號)
- 3、花括號保存對象方括號保存數(shù)組
- 4、使用雙引號
JSON解析
JSON數(shù)據(jù)在不同語言進行傳輸時,類型為字符串,不同的語言各自也都對應(yīng)有解析方法,需要解析完成后才能讀取。
1、Javascript解析方法
eavl()、JSON對象、JSON.parse()、JSON.stringify();
- 2、PHP解析方法
json_encode()、json_decode()
var json = JOSN.stringify(obj) //對象轉(zhuǎn)json
var object = JOSN.parse(josn) //json轉(zhuǎn)對象
- eaval 可以將字符串解析成JS可以識別的語法
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ù)庫里,從數(shù)據(jù)里取后往往是一個數(shù)組或?qū)ο?需要轉(zhuǎn)換成JOSN
$arr = array(
'name'=>'itcast',
'age'=>10
) ;
echo json_encode($arr);//轉(zhuǎn)換成josn
$obj = json_decode($json);//轉(zhuǎn)換成對象
echo $obj->name;//訪問對象屬性
$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>
// 定義一個命名空間
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)請求方式為get,參數(shù)放到url上
url = url + '?' + data;
data = null;
}
// 設(shè)置請求方式
xhr.open(type, url);
if(type == 'post') { // 當(dāng)請求方式為post,需要設(shè)置Content-Type
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
// 發(fā)送請求主體
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);
?>
補充
get數(shù)據(jù) 傳在url 后面
Conten-type 是設(shè)置send里面的類型
有g(shù)et 就不要Content-type