jsonp,ajax,json問題

JSONP技術

JSONP是解決跨域問題的一種常見方式css

跨域問題,由於瀏覽器有同源策略,因此當不一樣域間進行數據交互的時候就會出現跨域問題html

同源策略:只有在同協議、同域名、同端口的狀況下才能進去數據交互前端

JSONP的原理:能夠利用script標籤(會使用回調函數來接收數據)的src屬性不受同源策略的影響,能夠請求到不一樣域的數據,經過設置回調函數來接收數據web

JSONP是先後端結合的跨域方式:由於前端請求到數據後須要在回調函數中使用,因此後端得將數據放回到回調函數中ajax

JSONP屬於AJAX嗎?json

ajax是指經過使用xmlhttprequest對象進行異步數據交互的技術,JSONP是依靠script標籤的src屬性來獲取的,不屬於ajaxbootstrap

JSONP有什麼缺點,使用的時候須要注意什麼 ?後端

1.只能get處理,不能post跨域處理問題
2.須要注意的是:每次請求應該動態的建立script標籤和回調函數,數據獲取完成後銷燬。跨域

若是method是jsonp的話,就能夠用jsonp去跨域請求,可是注意要在url後寫關於callback的值爲JSON_CALLBACK瀏覽器

百度搜索小例子

<!DOCTYPE html>
<html lang="en" ng-app="myapp">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
     <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">

</head>

<body>
    <div ng-controller="yourController">
        <input type="text" ng-change="search()" ng-model="wd">
        <ul>
            <li ng-repeat="word in dataList"><a href="https://www.baidu.com/s?ie=utf-8&wd={{word}}">{{word}}</a></li>
        </ul>
    </div>
    <script src="./base/angular.min.js"></script>
    <script src="./base/angular-sanitize.js"></script>
    <script>
        var app = angular.module("myapp", ['ngSanitize'])
        app.controller("yourController", function($scope, $http) {
            $scope.search = function() {
                $http({
                    url: "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su",
                    method: "jsonp",
                    params: {
                        wd: $scope.wd,
                        cb: 'JSON_CALLBACK'
                    }
                }).success(function(results) {
                    $scope.dataList = results.s
                })
            }
        })
    </script>
</body>

</html>

AJAX

ajax是指經過使用xmlhttprequest對象進行異步數據交互的技術,實現無刷新狀態更新頁面和異步提交

ajax實現過程:

  1. 建立xmlhttprequest對象
  2. 建立一個新的HTTP請求,並指定該HTTP請求的方法、URL及驗證信息
  3. 設置向響應HTTP請求狀態變化的函數
  4. 發送HTTP請求
  5. 獲取異步調用返回的數據
  6. 使用JavaScript和DOM實現局部刷新

優勢:

  1. 不須要插件支持
  2. 用戶體驗極佳
  3. 提高web程序性能
  4. 減輕服務器和寬帶的負擔

缺點:

  1. 前進後提按鈕被破壞
  2. 搜索引擎的支持不夠
  3. 開發調試工具缺少

JSON

JSON和XML同樣也是一種簡單文本格式。是一種比較流行的標準格式,是數據的載體,相對於XML。JSON更加易讀、更便於肉眼檢查。在語法的層面上,JSON與其餘格式的區別是在於分隔數據的字符,JSON中的分隔符限於單引號、小括號、中括號、大括號、冒號和逗號

優勢:

  1. 做爲一種數據傳輸格式,JSON與XML很類似,可是它更加靈巧。
  2. JSON不須要從服務器端發送含有特定內容類型的首部信息

缺點:

  1. 語法過於嚴謹
  2. 代碼不易讀
  3. eval函數存在風險
相關文章
相關標籤/搜索