AJAX學習筆記二

JSON基本概念

JSON: javascript對象表示法(javascriptObject Notation)

JSON是存儲和交換文本信息的語法,類似XML。它採用鍵值對的方式來組織,易於閱讀和編寫,同時也易於機器解析和生成。

JSON是獨立於語言的,也就是說不管什麼語言,都可以解析json,只需要按照json的規則來就行

JSON與XML比較

Json的長度和xml格式比起來很短小

Json讀寫的速度更快

Json可以使用javascript內建的方法直接進行解析,轉換成javascript對象,非常方便

JSON語法規則

Json數據的書寫格式是:名稱/值對

名稱/值對組合中的名稱寫在前面(在雙引號中),值對寫在後面(同樣在雙引號中),中間用冒號隔開,比如“name”:“郭靖”

Json的值可以是下面這些類型:

數字(整數或浮點數),比如123,1.23

字符串(在雙引號中)

邏輯值(true或false)

數組(在方括號中)

對象(在花括號中)

Null

例子:

{
   “staff“:[
      {“name”: “洪七”,  “age”: 70},
      {“name”: “郭靖”,  ”age”:35}
   {“name”: “黃蓉”,  ”age“:30}
]
}

JSON解析

eval和JSON.parse

在代碼中使用eval是很危險的!特別是用它執行第三方的json數據(其中可能包含惡意代碼)時,儘可能使用JSON.parse()方法解析字符串本身,該方法還可以捕捉JSON中的語法錯誤。

Json校驗工具:JSONLint.com----在線進行代碼校驗是否有錯

 

用jQuery實現Ajax

jQuery.ajax([settings])

type: 類型,“POST”或”GET“,默認爲”GET”

url: 發送請求的地址

data:是一個對象,連同請求發送到服務器的數據

datatype:預期服務器返回的數據類型。如果不指定,jquery將自動根據HTTP包MIME信息來智能判斷,一般採用json格式,可以設置爲”json”

success: 是一個方法,請求成功後的回調函數。傳入返回後的數據,以及包含成功代碼的字符串

error:是一個方法,請求失敗時調用此函數。傳入XMLHttpRequest對象

 

跨域

一個域名地址的組成:

http://(協議)+ www. (子域名) + abc.com:(主域名) + 8080/(端口號) + scripts/jquery.js(請求資源地址)

當協議,子域名,主域名,端口號中任意一個不相同時,都算作不同域名

不同域之間相互請求資源,就算作“跨域”

比如:

http://www。Abc.com/index.html請求http://www.efg.com/service.php

 

javascript出於安全方面的考慮,不允許跨域調用其它頁面的對象。

www.abc.com/index.html調用www.abc.com/service.php(非跨域)

www.abc.com/index.html調用www.efg.com/service.php(跨域)

www.abc.com/index.html調用bbs.abc.com/service.php(跨域)

www.abc.com/index.html調用www.abc.com:81/service.php(跨域)

www.abc.com/index.html調用http://www.abc.com/service.php(跨域)

 

解釋子域名

如主域名:abc.com,它之下的子域名有多種:

www.abc.com

bbs.abc.com

Beijing.bbs.abc.com

Haidian.beijing.bbs.abc.com

 

處理跨域方法———代理

通過在同域名的web服務器端創建一個代理:

北京服務器(域名:www.beijing.com)

上海服務器(域名: www.shanghai.com)

比如在北京的web服務器的後臺(www.beijing.com/proxy-shanghaiservice.php)來調用上海服務器(www.shanghai.com/service.php)的服務,然後再把響應結果返回給前端,這樣前端調用北京同域名的服務就和調用上海的服務效果相同了。

處理跨域方法二—JSONP

JSONP可用於解決主流瀏覽器的跨域數據訪問的問題。

www.aaa.com頁面中:

<script>
function jsonp(json) {
  alert(json[“name”]);
}
</script>
<script src= “http://www.bbb.com/jsonp.js”></script>

www.bbb.com頁面中:jsonp({‘name’:’洪七’,’age’:24});

注意JSONP只能對GET請求起到效果,不支持POST方式

處理跨域方法三—XHR2

HTML5提供的XMLHttpRequest Level2已經實現了跨域訪問以及其他的一些新功能。

IE10以下版本都不支持

在服務器端做一些小小的改造即可:

header(‘Access-Control-Allow-Origin:*’);  *: 所有的域都可以訪問

header(‘Access-Control-Allow-Methods:POST,GET’);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章