json是 JavaScript Object Notation 的首字母縮寫,單詞的意思是javascript對(duì)象表示法灯节,這里說的json指的是類似于javascript對(duì)象的一種數(shù)據(jù)格式循头,目前這種數(shù)據(jù)格式比較流行,逐漸替換掉了傳統(tǒng)的xml數(shù)據(jù)格式炎疆。
- javascript對(duì)象字面量:
var tom = {
name:'tom',
age:18
}
- json格式的數(shù)據(jù):
{
"name":'tom',
"age":18
}
與json對(duì)象不同的是卡骂,json數(shù)據(jù)格式的屬性名稱需要用雙引號(hào)引起來,用單引號(hào)或者不用引號(hào)會(huì)導(dǎo)致讀取數(shù)據(jù)錯(cuò)誤形入。
- json的另外一個(gè)數(shù)據(jù)格式是數(shù)組偿警,和javascript中的數(shù)組字面量相同。
['tom',18,'programmer']
ajax與jsonp
ajax技術(shù)的目的是讓javascript發(fā)送http請(qǐng)求唯笙,與后臺(tái)通信螟蒸,獲取數(shù)據(jù)和信息。ajax技術(shù)的原理是實(shí)例化xmlhttp對(duì)象崩掘,使用此對(duì)象與后臺(tái)通信七嫌。ajax通信的過程不會(huì)影響后續(xù)javascript的執(zhí)行,從而實(shí)現(xiàn)異步苞慢。
- 同步和異步
現(xiàn)實(shí)生活中诵原,同步指的是同時(shí)做幾件事情,異步指的是做完一件事后再做另外一件事挽放,程序中的同步和異步是把現(xiàn)實(shí)生活中的概念對(duì)調(diào)绍赛,也就是程序中的異步指的是現(xiàn)實(shí)生活中的同步,程序中的同步指的是現(xiàn)實(shí)生活中的異步辑畦。
- 局部刷新和無刷新
ajax可以實(shí)現(xiàn)局部刷新吗蚌,也叫做無刷新,無刷新指的是整個(gè)頁面不刷新纯出,只是局部刷新蚯妇,ajax可以自己發(fā)送http請(qǐng)求,不用通過瀏覽器的地址欄暂筝,所以頁面整體不會(huì)刷新箩言,ajax獲取到后臺(tái)數(shù)據(jù),更新頁面顯示數(shù)據(jù)的部分焕襟,就做到了頁面局部刷新陨收。
- 同源策略
ajax請(qǐng)求的頁面或資源只能是同一個(gè)域下面的資源,不能是其他域的資源鸵赖,這是在設(shè)計(jì)ajax時(shí)基于安全的考慮务漩。特征報(bào)錯(cuò)提示:
XMLHttpRequest cannot load https://www.baidu.com/. No
'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'null' is therefore not allowed access.
$.ajax使用方法
常用參數(shù):
1拄衰、url 請(qǐng)求地址
2、type 請(qǐng)求方式菲饼,默認(rèn)是'GET'肾砂,常用的還有'POST'
3列赎、dataType 設(shè)置返回的數(shù)據(jù)格式宏悦,常用的是'json'格式,也可以設(shè)置為'html'
4包吝、data 設(shè)置發(fā)送給服務(wù)器的數(shù)據(jù)
5饼煞、success 設(shè)置請(qǐng)求成功后的回調(diào)函數(shù)
6、error 設(shè)置請(qǐng)求失敗后的回調(diào)函數(shù)
7诗越、async 設(shè)置是否異步砖瞧,默認(rèn)值是'true',表示異步以前的寫法:
$.ajax({
url: 'js/user.json',
type: 'GET',
dataType: 'json',
data:{'aa':1}
success:function(data){
......
},
error:function(){
alert('服務(wù)器超時(shí)嚷狞,請(qǐng)重試块促!');
}
});
- 新的寫法(推薦):
$.ajax({
url: 'js/user.json',
type: 'GET',
dataType: 'json',
data:{'aa':1}
})
.done(function(data) {
......
})
.fail(function() {
alert('服務(wù)器超時(shí),請(qǐng)重試床未!');
});
- jsonp
ajax只能請(qǐng)求同一個(gè)域下的數(shù)據(jù)或資源竭翠,有時(shí)候需要跨域請(qǐng)求數(shù)據(jù),就需要用到j(luò)sonp技術(shù)薇搁,jsonp可以跨域請(qǐng)求數(shù)據(jù)斋扰,它的原理主要是利用了script標(biāo)簽可以跨域鏈接資源的特性。
jsonp的原理如下:
<script type="text/javascript">
function aa(dat){
alert(dat.name);
}
</script>
<script type="text/javascript" src="....../js/data.js"></script>
頁面上定義一個(gè)函數(shù)啃洋,引用一個(gè)外部js文件传货,外部js文件的地址可以是不同域的地址,外部js文件的內(nèi)容如下:
aa({"name":"tom","age":18});
外部js文件調(diào)用頁面上定義的函數(shù)宏娄,通過參數(shù)把數(shù)據(jù)傳進(jìn)去问裕。