Javascript 谷歌图表向ajax发送URI

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

我使用图表已经有相当一段时间了,并尝试了许多不同的框架

我尝试了Canvas.js和Highcharts,然后我切换到谷歌图表。一切都很好,除了我不能让这些图表以某种方式转换为画布,或者只是通过AJAX发送URI,所以在服务器端我可以将其插入PDF

当我输入console.log“data”时,我可以在我的console.log中看到“FormData{}”,但AJAX请求从未发送到PHP

这是我的剧本:

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版本,所以它给了我这个错误。