Есть ли способ передать несколько массивов в PHP json_encode и проанализировать его с помощью jQuery?
Сейчас у меня есть этот PHP:
$columns = array(*/Data*/);
echo json_encode($columns);
И это отправляется через запрос AJAX GET с помощью JQuery.
var columns = jQuery.parseJSON(response);
Я хотел бы иметь возможность отправлять более одного массива в json_encode()
, есть ли способ сделать это и как вы проанализируете его с помощью jQuery?
Ответы
Ответ 1
Конечно, вы можете отправить массив массива. Ассоциативный массив 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
Ответ 2
Код должен выглядеть следующим образом:
$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];
Ответ 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.....
Ответ 4
После того, как вы заполнили все массивы, а именно $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
}