Javascript 使用PHP在ajax调用后执行chartjs

Javascript 使用PHP在ajax调用后执行chartjs,javascript,php,html,ajax,chart.js,Javascript,Php,Html,Ajax,Chart.js,我想在ajax调用后加载ChartJs图表。但不幸的是,它显示了所有ChartJS php变量的未定义变量错误 目标: 根据下拉列表中的用户选择更改图表,每个选择选项基本上都是一个JSON链接,我们从中获取数据以显示chartjs 到目前为止我所做的: 设置一个对每个用户都有效的AJAX调用,并选择两个默认值 页面加载+更改选项 在成功的ajax请求部分之后添加了Chartjs代码 测试了所有JSON代码和php数据,一切正常 chartjs php变量的所有ajax返回数据都正常。 问题: 所

我想在ajax调用后加载ChartJs图表。但不幸的是,它显示了所有ChartJS php变量的未定义变量错误

目标:

根据下拉列表中的用户选择更改图表,每个选择选项基本上都是一个JSON链接,我们从中获取数据以显示chartjs

到目前为止我所做的:

设置一个对每个用户都有效的AJAX调用,并选择两个默认值 页面加载+更改选项

在成功的ajax请求部分之后添加了Chartjs代码

测试了所有JSON代码和php数据,一切正常

chartjs php变量的所有ajax返回数据都正常。 问题:

所有chartjs PHP变量名称的未定义变量错误, 胶辊标签, cot_值、cot_值2、cot_值3、cot_值4、cot_值5 图表上没有显示数据。 当用户选择其他选项时,图表也不会使用新数据刷新。 以下是Javascript部分:

$document.readyfunction{ $.ajax{ url:./url.php, 类型:POST,, 数据:{ cur:$cur.val }, 成功:functiondata{ 警报数据; 新建Chartdocument.getElementByIdline-chart{ 键入:“行”, 数据:{ 标签:[], 数据集:[{ 数据:[], 标签:A, 边框颜色:3e95cd, 填充:假 }, { 数据:[], 标签:B, 边框颜色:8e5ea2, 填充:假 } , { 数据:[], 标签:C, 边框颜色:085b83, 填充:假 } , { 数据:[], 标签:D, 边框颜色:1c2925, 填充:假 } , { 数据:[], 标签:E, 边框颜色:b9801d, 填充:假 } ] }, 选项:{ 标题:{ 显示:对, 正文: }, 动画:{ 持续时间:0,//一般动画时间 }, 悬停:{ animationDuration:0,//悬停项目时的动画持续时间 }, responsiveAnimationDuration:0,//调整大小后的动画持续时间 } }; } }; $'cur'。关于'change',函数{ $.ajax{ url:./url.php, 类型:POST,, 数据:{ cur:$cur.val }, 成功:functiondata{ 警报数据; 新建Chartdocument.getElementByIdline-chart{ 键入:“行”, 数据:{ 标签:[], 数据集:[{ 数据:[], 标签:A, 边框颜色:3e95cd, 填充:假 }, { 数据:[], 标签:B, 边框颜色:8e5ea2, 填充:假 } , { 数据:[], 标签:C, 边框颜色:085b83, 填充:假 } , { 数据:[], 标签:D, 边框颜色:1c2925, 填充:假 } , { 数据:[], 标签:E, 边框颜色:b9801d, 填充:假 } ] }, 选项:{ 标题:{ 显示:对, 正文: }, 动画:{ 持续时间:0,//一般动画时间 }, 悬停:{ animationDuration:0,//悬停项目时的动画持续时间 }, responsiveAnimationDuration:0,//调整大小后的动画持续时间 } }; } }; }; };
要获取变量的值,您必须访问作为应答数据获得的json,并且必须转换val1、val2。。。在向量[val1,val2,…]中,使用:

结果:


只是一个细节,在Ajax JavaScript部分url:./url,应该是:url:./url.phpEdited,仍然是相同的问题。请删除js文件中的php代码,并用浏览器收到的字母替换。对不起,不确定您的意思,举个例子可能会有所帮助。是否要我将$cot_值替换为什么?从页面视图源中,我将数据作为数据:[]添加到ajax调用最后一节中的结果数组部分。然后我添加了数据={cot_标签:null,cot_值:valorcot_值,cot_值2:valorcot_值2,cot_值3:valorcot_值3,cot_值4:valorcot_值4,cot_值5:valorcot_值5};“new Chartdocument.getElementByIdline chart”上面的部分是charjs代码的开始。但仍然显示相同的错误,没有显示图表。以前,它至少用来显示图表,但上面没有数据。现在没有图表了,我放的json只是ajax调用在数据变量中应该返回什么的一个例子。要加载您需要的图表数据,您必须在ajax返回数据时访问该数据,与我之前的编码一致。那么为什么需要一个单独的数组呢?用picture.plus更新了我的问题。在chartjs编码中,我应该如何调用级别和数据的json数据。例如,我目前有以下标签:[]我所购买的
你能用你的编码来写吗?你能提供一个chartjs编码的例子吗?用一个例子编辑我的答案。问候语。
var ctx = document.getElementById("myChart").getContext('2d');
        $.ajax({
            url: "server.php",
            type: "POST",
            data: {
                ...
            },
            success: function(data) {
                var datos = JSON.parse(data);
                var myChart = new Chart(ctx, {
                    type: 'line',
                    data: {
                        labels: datos.cot_labels.split(','), ///in this way you access the data of the returned json
                        datasets: [{
                            data: datos.cot_values.split(','),///in this way you access the data of the returned json
                            label: "A",
                            borderColor: "#3e95cd",
                            fill: false
                        }, {
                            data: datos.cot_values2.split(','),
                            label: "B",
                            borderColor: "#8e5ea2",
                            fill: false
                        }]
                    },
                    options: {
                        title: {
                            display: true,
                            text: datos.name
                        },
                        animation: {
                            duration: 0, // general animation time
                        },
                        hover: {
                            animationDuration: 0, // duration of animations when hovering an item
                        },
                        responsiveAnimationDuration: 0, // animation duration after a resize
                    }
                });
            }
        });