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数据要放到此方法中才可以正确返回。

这个跨域问题花了我一天的时间才得以解决,还是请大神帮忙解决的,真的是效率太低,希望可以有效学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值