我正在使用flurry api来接收json数据。所以我不得不多次打电话来搜索网址并接收数据。但除第一个请求外,所有其他请求都会出现此错误
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
我为此创建了jfiddle。在那里你可以看到同样的错误。
以下是我用来接收数据的代码
function($) {
var url = 'http://api.flurry.com/appMetrics/ActiveUsersByMonth?apiAccessCode=DXGSYSYBSK26BZNSJB2X&apiKey=Removed&startDate=2012-01-01&endDate=2012-12-30&country=LK&versionName=1.0&groupBy=MONTHS';
$.ajax({
type: 'GET',
url: url,
crossDomain: true,
dataType: 'json',
success: function(json) {
console.dir(json);
alert();
},
error: function(e) {
console.log(e.message);
}
}).done(function(data) {
var activeUsers = [];
$.each( data.day, function( i, item ) {
var arr = $.map(item, function(el) { return el; });
activeUsers.push(arr[1]);
});
var barChartData = {
labels : ["January","February","March","April","May","June","July","August","September","October","November","December"],
datasets : [
{
fillColor : "rgba(220,220,220,0.5)",
strokeColor : "rgba(220,220,220,0.8)",
highlightFill: "rgba(220,220,220,0.75)",
highlightStroke: "rgba(220,220,220,1)",
data : activeUsers
}
]
}
var myChart = new Chart(document.getElementById("canvas").getContext("2d")).Bar(barChartData, {
responsive : true
});
});
})(jQuery);
答案 0 :(得分:1)
感谢@Human对小费的热爱。通过尝试这种方式实现了我想要的东西。将我的乱七八糟的网址移动到php并从那里请求服务。然后将结果编码为json。如果您没有正确设置标题,则会出现相同的错误。
服务器端代码:
header('Content-type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With');
header('Access-Control-Allow-Credentials: true');
$url="http://api.flurry.com/appMetrics/ActiveUsersByMonth?apiAccessCode=DXGSYSYBSK26BZNSJB2X&apiKey=Removed&startDate=2012-01-01&endDate=2012-12-30&country=LK&versionName=1.0&groupBy=MONTHS";
$json=file_get_contents($url);
echo $json;
客户端jquery ajax:
$.ajax({
type: "GET",
url: "<?php echo base_url("frontpage/monthly_active_count"); ?>"
})
.done(function( data ) {
console.log(data);
var activeUsers = [];
$.each( data.day, function( i, item ) {
var arr = $.map(item, function(el) { return el; });
activeUsers.push(arr[1]);
});
var barChartData = {
labels : ["January","February","March","April","May","June","July","August","September","October","November","December"],
datasets : [
{
fillColor : "rgba(220,220,220,0.5)",
strokeColor : "rgba(220,220,220,0.8)",
highlightFill: "rgba(220,220,220,0.75)",
highlightStroke: "rgba(220,220,220,1)",
data : activeUsers
}
]
}
var myChart = new Chart(document.getElementById("canvas").getContext("2d")).Bar(barChartData, {
responsive : true
});
});