如何正確理解JSON.NET標(biāo)簽加載
JQuery1.2后getJSON方法支持跨域讀取json數(shù)據(jù),原理是利用一個(gè)叫做jsonp的概念。當(dāng)然,究其本質(zhì)還是通過JSON.NET標(biāo)簽動(dòng)態(tài)加載js,似乎這是實(shí)現(xiàn)真正跨域的***方法。下面進(jìn)行分析研究。
1、getJSON的用法JQuery手冊已經(jīng)寫得很詳細(xì),參考手冊就可以了,很簡單。需要指出的一點(diǎn)是getJSON利用的jsonp需要客戶端與服務(wù)端作出配合。#t#
2、客戶端傳遞的URL里要包含callback變量,以形如callback=?的形式結(jié)尾。(jquery會(huì)隨機(jī)生成一個(gè)字符串替換?傳遞給服務(wù)端),服務(wù)端獲取客戶端傳遞的callback的值callbackValue,和需要傳遞的json字符串構(gòu)成 JSON.NET’(’.json.’)'傳回給客戶端(示例為php字符串連接方式,其他語言類似)
- 一、可以通過Javascript中的eval函數(shù)把符合一定格式的字符串轉(zhuǎn)化成JSON對(duì)象
- <script language="javascript">
- function ShowJsonString()
- {
- response = (
- "[{ name: 'Joe', age: '30', gender: 'M'},{ name: 'Chandler', age: '32', gender: 'M'},{ name: 'Rose', age: '31', gender: 'M'}]" //字符串形式
- );
- var response1 = "({ name: 'Vicson', age: '30', gender: 'M'})"; //字符串形式,這里的小括號(hào)不能少
- json = eval(response);
- json1 = eval(response1);
- alert(json[0].name + "," + json[1].age + "," +json[2].gender);
- alert(json1.name);
- }
- ShowJsonString();
- </script>
- 二、直接定義JSON對(duì)象
- <script language="javascript">
- function ShowJsonObject()
- {
- var user =
- {
- username:"andy",
- "age":20,
- "info": { "tel": "25003614", "cellphone": "882"},
- "address":
- [
- {city:"shenzhen","postcode":"0755"},
- {"city":"guangzhou","postcode":"020"}
- ] //address是一個(gè)數(shù)組
- } //對(duì)象形式
- alert(user.username);
- alert(user.age);
- alert(user.info.cellphone);
- alert(user.address[0].city);
- alert(user.address[0].postcode);
- }
- ShowJsonObject();
- </script>
JSON.NET的規(guī)則很簡單: 對(duì)象是一個(gè)無序的“‘名稱/值’對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱/值’ 對(duì)”之間使用“,”(逗號(hào))分隔。