Javascript 谷歌图表向ajax发送URI
我使用图表已经有相当一段时间了,并尝试了许多不同的框架 我尝试了Canvas.js和Highcharts,然后我切换到谷歌图表。一切都很好,除了我不能让这些图表以某种方式转换为画布,或者只是通过AJAX发送URI,所以在服务器端我可以将其插入PDF 当我输入console.log“data”时,我可以在我的console.log中看到“FormData{}”,但AJAX请求从未发送到PHP 这是我的剧本:Javascript 谷歌图表向ajax发送URI,javascript,jquery,ajax,charts,google-visualization,Javascript,Jquery,Ajax,Charts,Google Visualization,我使用图表已经有相当一段时间了,并尝试了许多不同的框架 我尝试了Canvas.js和Highcharts,然后我切换到谷歌图表。一切都很好,除了我不能让这些图表以某种方式转换为画布,或者只是通过AJAX发送URI,所以在服务器端我可以将其插入PDF 当我输入console.log“data”时,我可以在我的console.log中看到“FormData{}”,但AJAX请求从未发送到PHP 这是我的剧本: function chartTwo() { var data = google.v
function chartTwo() {
var data = google.visualization.arrayToDataTable([
['Year', 'Revenues', 'EB', {
type: 'number',
role: 'annotation'
}, 'Whole Year', {
type: 'string',
role: 'annotation'
}],
['2013', 998, 100, 100, 150, '150'],
['2014', 450, 500, 500, 300, '300'],
['2015', 691, 250, 250, 500, '500']
]);
var options = {
width: 800,
colors: ['##4e799f', '##a62b02', '##fd9f14'],
series: {
0: {
targetAxisIndex: 0,
type: 'bars'
},
1: {
targetAxisIndex: 1,
type: 'line',
curveType: 'none',
pointSize: 5,
annotations: {
highContrast: false,
textStyle: {
color: '##000000',
fontSize: 11
}
}
},
2: {
targetAxisIndex: 1,
type: 'line',
curveType: 'none',
pointSize: 5,
annotations: {
highContrast: false,
textStyle: {
color: '##000000',
fontSize: 11
}
}
}
},
legend: {
position: 'bottom'
}
};
var chart = new google.visualization.ComboChart(document.getElementById('chart_two'));
// Renders chart as PNG image
var chart_div = document.getElementById('chart_two_image');
google.visualization.events.addListener(chart, 'ready', function () {
chart_div.innerHTML = '<img src="' + chart.getImageURI() + '">';
// create a formData object and add the image to it
var data = new FormData();
data.append('pdfBody', chart.getImageURI());
console.log(data);
// send the formData object to the php function via ajax
$.ajax({
url: 'make.php?method=make',
data: data,
cache: false,
contentType: false,
dataType: "json",
processData: false,
type: 'GET',
success: function (results) {
console.log('success', results);
},
error: function (results) {
console.log('error', results);
}
});
});
chart.draw(data, options);
}
函数图表二(){
var data=google.visualization.arrayToDataTable([
[“年度”、“收入”、“EB”{
键入:“编号”,
角色:“注释”
}“全年”{
键入:“字符串”,
角色:“注释”
}],
['2013', 998, 100, 100, 150, '150'],
['2014', 450, 500, 500, 300, '300'],
['2015', 691, 250, 250, 500, '500']
]);
变量选项={
宽度:800,
颜色:[“4e799f”、“a62b02”、“fd9f14”],
系列:{
0: {
targetAxisIndex:0,
类型:“条”
},
1: {
目标指数:1,
键入:“行”,
曲线类型:“无”,
点数:5,
注释:{
高对比度:假,
文本样式:{
颜色:‘##000000’,
尺寸:11
}
}
},
2: {
目标指数:1,
键入:“行”,
曲线类型:“无”,
点数:5,
注释:{
高对比度:假,
文本样式:{
颜色:‘##000000’,
尺寸:11
}
}
}
},
图例:{
位置:'底部'
}
};
var chart=newgoogle.visualization.ComboChart(document.getElementById('chart_two');
//将图表呈现为PNG图像
var chart_div=document.getElementById('chart_two_image');
google.visualization.events.addListener(图表'ready',函数(){
chart_div.innerHTML='';
//创建formData对象并将图像添加到其中
var data=new FormData();
data.append('pdfBody',chart.getImageURI());
控制台日志(数据);
//通过ajax将formData对象发送到php函数
$.ajax({
url:'make.php?method=make',
数据:数据,
cache:false,
contentType:false,
数据类型:“json”,
processData:false,
键入:“GET”,
成功:功能(结果){
console.log(“成功”,结果);
},
错误:函数(结果){
console.log('错误',结果);
}
});
});
图表绘制(数据、选项);
}
有没有其他方法将这些图形转换为画布,然后发送到ajax 图表方法
getImageURI()
返回base64字符串可用于创建png图像 要通过ajax发送,实际上不需要-->
FormData
只需使用一个简单的对象
data: {
pdfBody: chart.getImageURI()
},
让ajax将数据处理成get请求的查询字符串
将processData
设置为true,或仅删除属性
$.ajax({
url: 'make.php?method=make',
data: {
pdfBody: chart.getImageURI()
},
cache: false,
type: 'GET',
success: function (results) {
console.log('success', results);
},
error: function (results) {
console.log('error', results);
}
});
我用window.myVar创建了一个全局变量,在脚本的末尾,我用数据调用了这个AJAX:myVar,现在它工作得很好。感谢所有的帮助我也尝试过这种方法,但它不起作用。现在我尝试用window.myVar创建一个全局变量,在脚本的末尾,我用data:myVar调用了这个AJAX,它给出了:“TypeError:$.AJAX不是一个函数”。有什么想法吗?$.ajax不是一个函数,它表明jquery没有包含在页面中……jquery已经被包含并加载,但是ti是Slim版本,所以它给了我这个错误。