2013-03-28 28 views
8

Voglio costruire un grafico in jqchart dove ho bisogno di ottenere due arraycome ottenere due array da php usando json, jquery ajax?

Ora voglio eseguire l'operazione come indicato di seguito. Che sta dando errore di corso.

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, 

         }, 


         ] 
      }); 
     } 

Heres codice PHP

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

Così uno ha idea di come farlo?

+1

Perché non unisci i 2 array e quindi li codifica come J FIGLIO? –

risposta

2

vedere se si è in grado di produrre due array di oggetti di JSON allora si può provare con questo:

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); 
     } 
    }); 

e sto supponendo se si è in grado di produrre this:

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

Non è possibile ottenere più oggetti del genere. Per un oggetto JSON, è necessario disporre di un singolo oggetto. Quindi quello che puoi fare è, creare un oggetto wrapper metterci dentro quei due array.

Quindi, in pratica, il codice php saranno:

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

echo json_encode($arr); 
?> 

Così ora si avrà singolo array principale e oggetto JSON in modo unico.

Sul lato JS, otterrete dati singoli. Piccola modifica sarà

$.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); 
      } 
     }); 

Questo dovrebbe funzionare.

9

alcuna necessità di eco JSON codificare due volte .... unire l'array e inviare i dati .......

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

e ottenere dati da parte

initChart2(data.result1,data.result2); 
+2

+1 bella risposta. –

1

È necessario combinare entrambi gli array utilizzando array_merge().

Esempio

$response = array(); 

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