json
json是 JavaScript Object Notation 的首字母縮寫哪审,單詞的意思是javascript對(duì)象表示法,這里說(shuō)的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)引起來(lái)叽奥,用單引號(hào)或者不用引號(hào)會(huì)導(dǎo)致讀取數(shù)據(jù)錯(cuò)誤。
json的另外一個(gè)數(shù)據(jù)格式是數(shù)組痛侍,和javascript中的數(shù)組字面量相同朝氓。
['tom',18,'programmer']
jsonp
jsonp可以跨域請(qǐng)求數(shù)據(jù)的原理:
主要是利用了script標(biāo)簽可以跨域鏈接資源的特性
ajax只能請(qǐng)求同一個(gè)域下的數(shù)據(jù)或資源,有時(shí)候需要跨域請(qǐng)求數(shù)據(jù)主届,就需要用到j(luò)sonp技術(shù)赵哲,jsonp可以跨域請(qǐng)求數(shù)據(jù),它的原理主要是利用了script標(biāo)簽可以跨域鏈接資源的特性岂膳。
360搜索的公開接口:
https://sug.so.#/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=s
jsonp的原理如下:
<script type="text/javascript">
function aa(dat){
alert(dat.name);
}
</script>
<script type="text/javascript" src="....../js/data.js"></script>
頁(yè)面上定義一個(gè)函數(shù)誓竿,引用一個(gè)外部js文件,外部js文件的地址可以是不同域的地址谈截,外部js文件的內(nèi)容如下:
aa({"name":"tom","age":18});
外部js文件調(diào)用頁(yè)面上定義的函數(shù),通過(guò)參數(shù)把數(shù)據(jù)傳進(jìn)去涧偷。
ajax
ajax技術(shù)的目的是讓javascript發(fā)送http請(qǐng)求簸喂,與后臺(tái)通信,獲取數(shù)據(jù)和信息燎潮。ajax技術(shù)的原理是實(shí)例化xmlhttp對(duì)象喻鳄,使用此對(duì)象與后臺(tái)通信。ajax通信的過(guò)程不會(huì)影響后續(xù)javascript的執(zhí)行确封,從而實(shí)現(xiàn)異步除呵。
1再菊、同步和異步
現(xiàn)實(shí)生活中,同步指的是同時(shí)做幾件事情颜曾,異步指的是做完一件事后再做另外一件事纠拔,程序中的同步和異步是把現(xiàn)實(shí)生活中的概念對(duì)調(diào),也就是程序中的異步指的是現(xiàn)實(shí)生活中的同步泛豪,程序中的同步指的是現(xiàn)實(shí)生活中的異步稠诲。
2、局部刷新和無(wú)刷新
ajax可以實(shí)現(xiàn)局部刷新诡曙,也叫做無(wú)刷新臀叙,無(wú)刷新指的是整個(gè)頁(yè)面不刷新,只是局部刷新价卤,ajax可以自己發(fā)送http請(qǐng)求劝萤,不用通過(guò)瀏覽器的地址欄,所以頁(yè)面整體不會(huì)刷新慎璧,ajax獲取到后臺(tái)數(shù)據(jù)趁矾,更新頁(yè)面顯示數(shù)據(jù)的部分,就做到了頁(yè)面局部刷新痰驱。
/3录豺、同源策略
ajax請(qǐng)求的頁(yè)面或資源只能是同一個(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)重試套腹!');
});
- url: 'data.json',//請(qǐng)求的服務(wù)器路徑绪抛,實(shí)際開發(fā)中寫文檔接口的路徑
- type: 'get',//分get/post請(qǐng)求资铡,涉及隱私或安全性要求較高的用post、安全要求不高及數(shù)據(jù)量較小的用get
- dataType: 'json',//要讀取什么格式的數(shù)據(jù)幢码,還可以是xml script html upload等
正則表達(dá)式
1笤休、什么是正則表達(dá)式:
能讓計(jì)算機(jī)讀懂的字符串匹配規(guī)則。
2蛤育、正則表達(dá)式的寫法:
var re=new RegExp('規(guī)則', '可選參數(shù)');
var re=/規(guī)則/參數(shù);
3宛官、規(guī)則中的字符
1)普通字符匹配:
如:/a/ 匹配字符 ‘a(chǎn)’,/a,b/ 匹配字符 ‘a(chǎn),b’
2)轉(zhuǎn)義字符匹配:
\d 匹配一個(gè)數(shù)字瓦糕,即0-9
\D 匹配一個(gè)非數(shù)字底洗,即除了0-9
\w 匹配一個(gè)單詞字符(字母、數(shù)字咕娄、下劃線)
\W 匹配任何非單詞字符亥揖。等價(jià)于[^A-Za-z0-9_]
\s 匹配一個(gè)空白符
\S 匹配一個(gè)非空白符
\b 匹配單詞邊界
\B 匹配非單詞邊界
. 匹配一個(gè)任意字符,除了換行符‘\n’和回車符‘\r’
\1 重復(fù)子項(xiàng)
4圣勒、量詞:對(duì)左邊的匹配字符定義個(gè)數(shù)
? 出現(xiàn)零次或一次(最多出現(xiàn)一次)
- 出現(xiàn)一次或多次(至少出現(xiàn)一次)
- 出現(xiàn)零次或多次(任意次)
{n} 出現(xiàn)n次
{n,m} 出現(xiàn)n到m次
{n,} 至少出現(xiàn)n次
5费变、任意一個(gè)或者范圍
[abc123] : 匹配‘a(chǎn)bc123’中的任意一個(gè)字符
[a-z0-9] : 匹配a到z或者0到9中的任意一個(gè)字符
6、限制開頭結(jié)尾
^ 以緊挨的元素開頭
$ 以緊挨的元素結(jié)尾
7圣贸、修飾參數(shù):
g: global挚歧,全文搜索,默認(rèn)搜索到第一個(gè)結(jié)果接停止
i: ingore case吁峻,忽略大小寫滑负,默認(rèn)大小寫敏感
m: multiple lines,多行搜索(更改^ 和$的含義用含,使它們分別在任意一行對(duì)待行首和行尾匹配矮慕,而不僅僅在整個(gè)字符串的開頭和結(jié)尾匹配)
8、常用函數(shù)
1啄骇、test
用法:正則.test(字符串) 匹配成功痴鳄,就返回真,否則就返回假
2缸夹、search
用法:字符串.search(正則) 匹配成功痪寻,返回位置,否則返回-1
3虽惭、match
用法: 字符串.match(正則)槽华;匹配成功,就返回匹配成功的數(shù)組趟妥,否則就返回null
4、replace
用法:字符串.replace(正則佣蓉,新的字符串) 匹配成功的字符去替換新的字符
正則默認(rèn)規(guī)則
匹配成功就結(jié)束披摄,不會(huì)繼續(xù)匹配亲雪,區(qū)分大小寫