有没有办法将多个数组传递给PHP json_encode并使用jQuery解析它?

时间:2011-12-04 04:43:59

标签: php jquery ajax json

现在我有这个PHP:

$columns = array(*/Data*/);
echo json_encode($columns);

这是通过使用JQuery的AJAX GET请求发送的。

var columns = jQuery.parseJSON(response);

我希望能够在json_encode()中发送多个数组是否有任何方法可以执行此操作以及如何使用jQuery解析它?

4 个答案:

答案 0 :(得分:64)

当然,你可以发送一个数组数组。 PHP关联数组将成为一个javascript对象。

在PHP中:

$data = array();
$data['fruits'] = array('apple','banana','cherry');
$data['animals'] = array('dog', 'elephant');
echo json_encode($data);

然后在jQuery上

var data = jQuery.parseJSON(response);
然后你可以做这样的事情来访问值

console.log(data.fruits[0]); // apple
console.log(data.animals[1]); // elephant

答案 1 :(得分:8)

代码应如下所示:

$columns = array(/*Data*/);
$columns1 = array(/*Data1*/);
echo json_encode(array($columns,$columns1));

在jQuery中使用

var columns_array=jQuery.parseJSON(response);
columns=columns_array[0];
columns1=columns_array[1];

答案 2 :(得分:3)

  $data1 = array();
  $data2 = array();
  $data1[] = array('apple','banana','cherry');
  $data2[] = array('dog', 'elephant');
  echo json_encode(array($data1,$data2));

在ajax中,

      console.log(response[0][0])//apple
      console.log(response[1][0])//dog.....

答案 3 :(得分:1)

在我的案例中填充了所有数组$array1_json$array2_json等后,

$number_of_array1elements = count($array1_json);
$number_of_array2elements = count($array2_json);
$number_of_array3elements = count($array3_json);

array_unshift($array1_json , $number_of_array1elements); 
// pushes element to the start of array1_json
array_unshift($array2_json , $number_of_array2elements);
array_unshift($array3_json , $number_of_array3elements);

和其他阵列类似。

echo json_encode( array_merge($array1_json, $array2_json, $array3_json) );

在.js文件中,使用:

var val = xmlhttp.responseText;
var jsonData = JSON.parse(val);
var number_of_array1elements = jsonData[0];
for (var i = 1; i <= number_of_array1elements; i++ ) 
{
    // use jsonData[i] to select the required element and do whatever is needed with it
}
var number_of_array2elements = jsonData[i];
for ( i = i+1; i <= number_of_array1elements+number_of_array2elements+1; i++ ) 
{
     // use jsonData[i] to select the required element and do whatever is needed with it
}