JavaScript初學,一點自己的理解,有不當之處請大家指正~
JSONP:
本地html文件要獲取xxx網站(跨域)數據時使用的方法。
跨域問題:
外部服務器的數據只能用外部服務器中的js訪問,本地js無法用XMLHttpRequest()訪問。
外部服務器中的Web服務提供JSON數據,比如在http://gumball.wickedlysmart.com/中,數據包含在函數updateSales中作為參數,現在要在本地html中訪問外部服務器中的JSON數據該怎麼辦呢?
1, 查看Web服務文檔,明確服務實際使用的參數名(本例只有一個參數即一個對象數組);
2, 在url中指定一個回調函數,http://gumball.wickedlysmart.com/?callback=updateSales,用來指定Web服務中訪問JSON數據的函數名;
3, 在本地js文件中使用剛才定義的函數名創建函數updateSales(對象),編寫處理得到外部JSON數據的方法;
4, 在html文件中的<body>標簽下使用<script>標簽鏈接到外部Web服務,url為2中的那個路徑。
總結:
JSONP目的在於提供給本地html一個函數接口(本地html可通過在url後方加入?callback=functionName的方法指定函數名),為了確保數據訪問的安全,服務器將安全的數據放在回調函數的參數中,函數內部的參數就是服務器提供給本地的數據,至於怎麼使用這些數據就要在本地的js中定義這個callback函數了。
注意:本地使用JSONP請求訪問Web服務,可能會獲取不安全的Js代碼,所以要確保信任這個Web服務。
JSONP與XMLHttpRequest:
XMLHttpRequest用於開發內部Web服務,內部訪問內部,同域訪問會更加簡便。
訪問外部數據時(跨域訪問)就要使用JSONP。
以上所述就是本文的全部內容了,希望大家能夠喜歡,能夠對大家學習jsonp有所幫助。