2018-09-29

json

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 loadhttps://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的原理如下:

function aa(dat){

alert(dat.name);

}

頁面上定義一個(gè)函數(shù),引用一個(gè)外部js文件,外部js文件的地址可以是不同域的地址,外部js文件的內(nèi)容如下:

aa({"name":"tom","age":18});

外部js文件調(diào)用頁面上定義的函數(shù),通過參數(shù)把數(shù)據(jù)傳進(jìn)去。

小禮物走一走,來簡(jiǎn)書關(guān)注我

贊賞支持

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,801評(píng)論 1 45
  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對(duì)象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,557評(píng)論 0 7
  • 2018web前端最新面試題總結(jié) 一、Html/Css基礎(chǔ)模塊 基礎(chǔ)部分 什么是HTML?答:? HTML并不是...
    duans_閱讀 4,711評(píng)論 3 27
  • 五十三:請(qǐng)解釋 JavaScript 中 this 是如何工作的。1.方法調(diào)用模式當(dāng)一個(gè)函數(shù)被保存為一個(gè)對(duì)象的屬性...
    Arno_z閱讀 683評(píng)論 0 2
  • 你說 不如就回到各自的生活 我每天都是小唐小唐小唐 你忽然跟我說 回到各自的生活 真的難以接受 雖然難過 卻感到輕...
    少女芙蘭朵閱讀 235評(píng)論 0 0

友情鏈接更多精彩內(nèi)容