如何使用JSON、jQuery Ajax从PHP获取两个数组?

10

我想在jqchart中建立一个图形,需要获取两个数组。

现在我想执行以下操作,但肯定会出错。

html
 $.ajax(
        {
            type: "GET",
            url: "customer_coverage.php",
            data: {id:id},
            contentType: "application/json",
            dataType: "json",
            success: function (data21,data22) {

                initChart2(data21,data22);
            }
        });




        function initChart2(data21,data22) {
            $('#jqChart2').jqChart({


                series: [
                {
                            type: 'column',
                            title: 'no of days ',
                data:data21,

                        },
                {
                            type: 'column',
                            title: 'no of days ',
            data:data22,

                        },


                        ]
            });
        }

这是 PHP 代码

  echo json_encode($arr1);
  echo json_encode($arr2);

那么有没有人知道如何做到这一点?


1
为什么不将这两个数组合并,然后将它们编码为JSON呢? - Alaa Badran
4个回答

12

不需要两次 echo json_encode......合并数组并发送数据即可......

echo json_encode(array('result1'=>$arr1,'result2'=>$arr2));

并通过获取数据

initChart2(data.result1,data.result2);

4

如果你能够生成两个JSON对象数组,那么你可以尝试使用以下方法:

    var data21,data22; 
    $.ajax({
        type: "GET",
        url: "customer_coverage.php",
        data: {id:id},
        contentType: "application/json",
        dataType: "json",
        success: function (data) {
            $.each(data, function(i, item){
               data21 = item.data21;
               data22 = item.data22;
            });
            initChart2(data21,data22);
        }
    });

我假设您能够制作出这个:

而且如果您能够实现这一点:

[
 {
    "data21": {
        .........
    },
    "data22": {
        ........
    }
 }
]

2

你不能像那样获取多个对象。对于JSON对象,你需要有一个单独的对象。因此,你可以创建一个包装器对象,并将这两个数组放在其中。

所以基本上,你的php代码将是:

<?php
$arr= array();
$arr['arr1'] = $arr1;
$arr['arr2'] = $arr2;

echo json_encode($arr);
?>

现在您将拥有单一的主数组和单一的JSON对象。

在JS方面,您将获得单个数据。稍作修改即可。

$.ajax(
        {
            type: "GET",
            url: "customer_coverage.php",
            data: {id:id},
            contentType: "application/json",
            dataType: "json",
            success: function (data) {
            var data21=data['arr1'];
            var data22=data['arr2'];
                initChart2(data21,data22);
            }
        });

这应该可以正常工作。


1
你需要使用array_merge()函数将两个数组合并。 示例
$response = array();

$response = array_merge($arr1,$arr2);
echo json_encode($response);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接