在canvasjs数据点中使用html隐藏变量


Use html hidden variable in canvasjs dataPoints

我的数据点字符串保存在数据库中。我把它传递给php的隐藏变量。在jquery中使用。val()。现在我必须在帆布js的数据点中传递它。

请看下面的php代码

<input type="hidden" id="graph_data" name="graph_data" value="<?php echo $graph_data ?>" >

$graph_data包含以下字符串

{x: 30, y:[.]00, 3.20),标签:"驾驶"},{x: 10, y:[3.20, 5.17],标签:"下班"}

请参阅我的jquery代码。

var graph_data = $('#graph_data').val();
data: [
    {
        type: "rangeBar",
        dataPoints: [graph_data]
}]

我猜graph_data是一个字符串。

Try: var graph_data = JSON.parse($('#graph_data').val());

我想知道问题是否实际上不是在data,因为它没有封装在对象中。

var data = [
    {
        type: "rangeBar",
        dataPoints: [graph_data]
}];

这是你的错误吗?

啊!试试这个:<input type="hidden" id="graph_data" name="graph_data" value="<?php echo str_replace('"', '''"', $graph_data) ?>" >

我认为问题是value=的引号(")被"Driving"的引号结束了

你肯定是在艰难地移动数据。

PHP有一个方便的json_encode()函数,它将为Javascript编码几乎任何数据。因此,与其试图在表单中隐藏复杂的数据,为什么不直接将这些数据作为javascript的一部分呢?

一样:

<script>
var graph_data = <?php json_encode($graph_data); ?>;
var chart = new CanvasJS.Chart("chartContainer",
{
    data: [{
        type: "rangeBar",
        dataPoints: graph_data
    }]
};
<script>

就将复杂数据从PHP插入到Javascript而言,这应该可以解决您的问题。您可以在浏览器中查看源代码,看看数据到json的转换是如何产生的,并确保没有任何语法错误。

请注意,我不确定你是否对CanvasJS的使用进行了分类。从你最初的帖子来看,你似乎也遇到了麻烦。但是,一次解决一个问题。