如何正確理解JSON.NET標簽加載
JQuery1.2后getJSON方法支持跨域讀取json數據,原理是利用一個叫做jsonp的概念。當然,究其本質還是通過JSON.NET標簽動態加載js,似乎這是實現真正跨域的***方法。下面進行分析研究。
1、getJSON的用法JQuery手冊已經寫得很詳細,參考手冊就可以了,很簡單。需要指出的一點是getJSON利用的jsonp需要客戶端與服務端作出配合。#t#
2、客戶端傳遞的URL里要包含callback變量,以形如callback=?的形式結尾。(jquery會隨機生成一個字符串替換?傳遞給服務端),服務端獲取客戶端傳遞的callback的值callbackValue,和需要傳遞的json字符串構成 JSON.NET’(’.json.’)'傳回給客戶端(示例為php字符串連接方式,其他語言類似)
- 一、可以通過Javascript中的eval函數把符合一定格式的字符串轉化成JSON對象
- <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'})"; //字符串形式,這里的小括號不能少
- json = eval(response);
- json1 = eval(response1);
- alert(json[0].name + "," + json[1].age + "," +json[2].gender);
- alert(json1.name);
- }
- ShowJsonString();
- </script>
- 二、直接定義JSON對象
- <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是一個數組
- } //對象形式
- alert(user.username);
- alert(user.age);
- alert(user.info.cellphone);
- alert(user.address[0].city);
- alert(user.address[0].postcode);
- }
- ShowJsonObject();
- </script>
JSON.NET的規則很簡單: 對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。