【问题标题】:how to get two arrays from php using json,jquery ajax?如何使用 json、jquery ajax 从 php 获取两个数组?
【发布时间】:2013-03-18 14:08: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);

那么有人知道怎么做吗?

【问题讨论】:

  • 为什么不合并这两个数组,然后将它们编码为 JSON?

标签: php jquery ajax json


【解决方案1】:

无需两次回显json编码......合并数组并发送数据......

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

并通过

获取数据
initChart2(data.result1,data.result2);

【讨论】:

    【解决方案2】:

    看看你能不能产生两个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": {
            ........
        }
     }
    ]
    

    【讨论】:

      【解决方案3】:

      你不能像那样得到多个对象。对于 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);
                  }
              });
      

      这应该可行。

      【讨论】:

        【解决方案4】:

        您需要使用array_merge() 组合这两个数组。

        示例

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多