Php jqueryajax请求flurry时出错跨源请求被阻止
我使用FlurryAPI来接收json数据。因此,我必须多次致电flurry url并接收数据。但除了第一个请求外,所有其他请求都会出现此错误Php jqueryajax请求flurry时出错跨源请求被阻止,php,jquery,ajax,Php,Jquery,Ajax,我使用FlurryAPI来接收json数据。因此,我必须多次致电flurry url并接收数据。但除了第一个请求外,所有其他请求都会出现此错误 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. 我已经为此创造了。在那里你可以看到同样的错误 下面是我用来接收数据的代码 fun
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
我已经为此创造了。在那里你可以看到同样的错误
下面是我用来接收数据的代码
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);
感谢@humanlove提供的提示。通过这样的尝试,我得到了我想要的。将我的flurry url移动到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
});
});
$.ajax({
键入:“获取”,
网址:“
})
.完成(功能(数据){
控制台日志(数据);
var activeUsers=[];
$。每个(数据日,功能(i,项目){
var arr=$.map(项,函数(el){return el;});
activeUsers.push(arr[1]);
});
var barChartData={
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”],
数据集:[
{
填充颜色:“rgba(220220,0.5)”,
strokeColor:“rgba(2200,0.8)”,
高光填充:“rgba(2200,0.75)”,
强光笔划:“rgba(2201)”,
数据:activeUsers
}
]
}
var myChart=新图表(document.getElementById(“canvas”).getContext(“2d”)).Bar(barChartData{
回答:对
});
});
您是否尝试将数据类型:“json”转换为数据类型:“jsonp”,是的。没用。我认为这个毛茸茸的API不支持jsonp,然后使用php请求服务并使用它编码为json。然后你就可以在Javascript中使用ajax访问json了。我没听清楚。你们能不能把样品贴出来。有人遇到过类似的错误并通过了吗?