将 PHP 数组转换为 JQuery 数据

Posted

技术标签:

【中文标题】将 PHP 数组转换为 JQuery 数据【英文标题】:Converting PHP array into JQuery data 【发布时间】:2017-08-09 23:23:58 【问题描述】:

我在尝试将 php 数组转换为 jQuery 时遇到了一个小问题。我在论坛上阅读了很多帖子,但我仍然无法弄清楚是什么问题。

我的 PHP 代码基本上用于将最后 7 个日期添加到数组中,并将“a”和“b”分配给相同的值,仅用于测试

$dni = array();
for($i =7; $i>0; $i--)
$dzien = date("Y-m-d", strtotime($i." day"));
$d->y = $dzien;
$chart = mysql_query("SELECT COUNT(*) FROM kolejka WHERE data LIKE '$dzien' AND odbyta = '0'", $link);
while($c = mysql_fetch_array($chart, MYSQL_ASSOC))

    $xdi = $c['COUNT(*)'];
  
$d->a = $xdi;
$d->b = $xdi;
$dni[] = $d;

$data = json_encode($dni);

我应该生成图表的 jQuery 代码:

var ar = <?php echo json_encode($data); ?>;
alert(ar);
Morris.Bar(
    element: 'pacjenci-chart',
    data: ar,
    xkey: 'y',
    ykeys: ['a', 'b'],
    labels: ['New', 'Old'],
    barColors: ['#33414E', '#1caf9a'],
    gridTextSize: '10px',
    hideHover: true,
    resize: true,
    gridLineColor: '#E5E5E5'
);

如果我将非动态内容放入“数据”中,例如:

        data: [
         y: 'Oct 10', a: 75, b: 35 ,
         y: 'Oct 11', a: 64, b: 26 ,
         y: 'Oct 12', a: 78, b: 39 ,
         y: 'Oct 13', a: 82, b: 34 ,
         y: 'Oct 14', a: 86, b: 39 ,
         y: 'Oct 15', a: 94, b: 40 ,
         y: 'Oct 16', a: 96, b: 41 
    ],

效果很好。

的输出
    var ar = <?php echo json_encode($data) ?>;

var ar = "[\"y\":\"2017-03-19\",\"a\":\"0\",\"b\":\"0\",\"y\":\"2017-03-19\",\"a\":\"0\",\"b\":\"0\",\"y\":\"2017-03-19\",\"a\":\"0\",\"b\":\"0\",\"y\":\"2017-03-19\",\"a\":\"0\",\"b\":\"0\",\"y\":\"2017-03-19\",\"a\":\"0\",\"b\":\"0\",\"y\":\"2017-03-19\",\"a\":\"0\",\"b\":\"0\",\"y\":\"2017-03-19\",\"a\":\"0\",\"b\":\"0\"]";

【问题讨论】:

双重编码的情况。在 jQuery 中分配给变量时删除 json_encode() 双重编码。这导致了问题。 只使用一个... 【参考方案1】:

你不是在这里做两次 json-encode 吗?

$data = json_encode($dni);
var ar = <?php echo json_encode($data); ?>;

摆脱其中一个,它应该像这样工作。

这有点明显,因为所有额外的转义再次编码一个 json 字符串,它将被转换为一个字符串:-)。只需回显 $data 变量即可。

【讨论】:

【参考方案2】:

您对数组进行了两次编码 - 首先在 PHP 中,然后在 jQuery 中。

var ar = <?php echo json_encode($data); ?>;

删除json_encode()

var ar = <?php echo $data; ?>;

【讨论】:

以上是关于将 PHP 数组转换为 JQuery 数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP/jQuery - 如何将多维 PHP 数组转换为 JSON 字符串?

如何将数组json数据转换为jquery中的特定json?

我想在 jquery 中使用碳格式时间,但我不知道如何将 jquery 数据转换为 php [关闭]

如何使用 PHP 将 JSON 字符串数据转换为数组?

如何将 HTML 表转换为 jQuery 键值对数组?

将 PHP 文件树数组转换为相对路径数组