国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

關(guān)于JSON與JSONP簡(jiǎn)單總結(jié)

2019-11-20 09:14:03
字體:
供稿:網(wǎng)友

一、什么是json

JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。 易于人閱讀和編寫。同時(shí)也易于機(jī)器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個(gè)子集。 JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數(shù)據(jù)交換語言。

二、什么是JSONP

JSONP(JSON with Padding)是資料格式 JSON 的一種“使用模式”,可以讓網(wǎng)頁從別的網(wǎng)域要資料。另一個(gè)解決這個(gè)問題的新方法是跨來源資源共享。

JSONP

定義:是一種跨域數(shù)據(jù)訪問方式。

作用與原理:在客戶端聲明 callback回調(diào)函數(shù)之后,客戶端通過script標(biāo)簽向服務(wù)器跨域請(qǐng)求數(shù)據(jù),然后服務(wù)端返回相應(yīng)的JSON數(shù)據(jù)并動(dòng)態(tài)執(zhí)行回調(diào)函數(shù)。

在jQuery中使用如下:

//JQuery JSONP Support var url = "http://192.168.0.103:12075/api/test.aspx?id=1&callback=?"; jQuery.getJSON(url, function(data){ // 處理返回的json 數(shù)據(jù)alert("name:" + data.name+ ", Price:" + data.price); }); 

調(diào)用 webservices 使用如下:

$.getJSON( "http://192.168.0.103:12050/services/WebService1.asmx/ws/test?callback=?", { name: "jim", time: "2pm" }, function(data) {//處理返回的json 數(shù)據(jù)alert(decodeURI(data.msg));});

服務(wù)器端(webservices 后臺(tái)代碼):

[WebMethod] public void ws(string name,string time) { HttpRequest Request = HttpContext.Current.Request; string callback = Request["callback"]; HttpResponse Response = HttpContext.Current.Response; Response.Write(callback + "({msg:' 返回?cái)?shù)據(jù)'})"); Response.End(); }

總結(jié)JSONP:

兩點(diǎn)需注意:

1.不提供錯(cuò)誤處理機(jī)制,有數(shù)據(jù)返回,沒有不顯示內(nèi)容,獲得一個(gè)404的錯(cuò)誤

2.如果使用了不信任的服務(wù)會(huì)造成很大的安全隱患。

JSON

與XML相比,JSON是一個(gè)輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時(shí)也易于機(jī)器解析和生成,分兩種:對(duì)象(使用下面點(diǎn)語法獲取屬性值)和數(shù)組(遍歷數(shù)組,索引獲取)。

1.把 JSON 文本轉(zhuǎn)換為 JavaScript 對(duì)象

從 web 服務(wù)器上讀取 JSON 數(shù)據(jù),將 JSON 數(shù)據(jù)轉(zhuǎn)換為 JavaScript 對(duì)象,然后在網(wǎng)頁中使用該數(shù)據(jù).

JavaScript 函數(shù) eval() 可用于將 JSON 文本轉(zhuǎn)換為 JavaScript 對(duì)象。必須把文本包圍在括號(hào)中,這樣才能避免語法錯(cuò)誤。

即:通過eval函數(shù)將json串轉(zhuǎn)換為json對(duì)象,然后可以通過兩種方法訪問:

服務(wù)器端:

// user 實(shí)體對(duì)象,后臺(tái)序列化成對(duì)象,供前臺(tái)使用string strJson = Newtonsoft.Json.JsonConvert.SerializeObject(user);context.Response.Write(strJson);

前臺(tái):

$.getJSON( "webdata/test.aspx",function(data) {//獲取對(duì)象里面的一個(gè)值(username:用戶姓名)$("#divmessage").text(data.username);});

2. 數(shù)組 獲取

packJson = [{"name":"nikita", "password":"1111"},{"name":"tony", "password":"2222"}];

循環(huán)遍歷:

for(var i = 0; i < packJson.length; i++){alert(packJson[i].name + " " + packJson[i].password);}

以上所述是小編給大家介紹的關(guān)于JSON與JSONP簡(jiǎn)單總結(jié),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新丰县| 罗城| 江门市| 全州县| 砚山县| 定兴县| 错那县| 彭山县| 华坪县| 长沙县| 奉新县| 阳山县| 昌乐县| 星座| 湖口县| 寿宁县| 钟山县| 达孜县| 白朗县| 宁南县| 大石桥市| 万年县| 福清市| 禹州市| 灵石县| 财经| 文安县| 六枝特区| 布拖县| 固镇县| 本溪市| 新巴尔虎左旗| 鄂托克旗| 营山县| 萍乡市| 濮阳市| 石泉县| 岑巩县| 靖西县| 汶川县| 若羌县|