angularjs解決跨域問題

首先我來聲明一下“跨域”這個問題都有哪些類型:

這裏說的js跨域是指通過js在不同的域之間進行數據傳輸或通信,比如用ajax向一個不同的域請求數據,或者通過js獲取頁面中不同域的框架中(iframe)的數據。只要協議、域名、端口有任何一個不同,都被當作是不同的域。

下表給出了相對http://store.company.com/dir/page.html同源檢測的結果:


我主要使用的是angularjs框架,所以使用了以下這個方法:

var app = angular.module('myApp',[]);
app.controller('siteCtrl',function($scope,$http) {
  $http({
method: 'JSONP',
        url: 'http://127.0.0.1/sites.php?callback=JSON_CALLBACK',
}).success(function(response) {$scope.names = response.sites;});
});

實現了跨域問題解決,但是我又遇到了一個問題,本地中的sites.php文件中是json數據,而我的json數據格式是沒有問題的,如下:

{
    "sites" : [
        {
            "Name": "菜鳥教程",
            "Url": "www.runoob.com",
            "Country": "CN"
        },
        {
            "Name": "baidu",
            "Url": "www.baidu.com",
            "Country": "CN"
        },
        {
            "Name": "sina",
            "Url": "www.sina.com",
            "Country": "CN"
        },
        {
            "Name": "微博",
            "Url": "www.weibo.com",
            "Country": "CN"
        }
    ]
}

但是在瀏覽器中總是出現錯誤:



Uncaught SyntaxError: Unexpected token :

一開始我以爲是我的json格式錯誤,後來驗證後是正確的,最後使用這個解決辦法解決掉這個問題,在sites.php文件中的json數據中添加一個函數angular.callbacks._0(json);

json數據要放到此方法中纔可以正確返回。

這個跨域問題花了我一天的時間才得以解決,還是請大神幫忙解決的,真的是效率太低,希望可以有效學習。

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