Wallflower Wallflower - 3 months ago 24
PHP Question

How to send 2 multidimensional array via json_encode for PHP

I want to retrieve array for my ajax function using json_encode in Laravel PHP, but the problem is i need to send 2 multidimensional array from my controller so i can do nested loop inside my ajax using those 2 different multidimensional array,

the ajax simple example (this is my wrong version):

function getData() {
jQuery(document).ready(function() {
jQuery.ajax({
url: "test",
type: 'GET',
data: {counter : ctr},
dataType: "json",
success: function(data1,data2) {
$.each(data1.length, function(i, item) {
alert(data1[i].test1);
$.each(data2, function(i, item) {
alert(data2[i].test2);
});​
});​
},
error: function(data) {
}
});
});
}


sending data php using json_encode code:

$data1 = array
(
array("test1",22,18),
array("wow",15,13));

$data2 = array
(
array("test2",22,18),
array("ish",15,13));

echo json_encode(???);

Answer

You can do in one array like below

$data = array (
        array (
            array("name" => "test1", "value" => array(22,18)),
            array("name" => "wow", "value" => array(15,13))
        ),
        array (
            array("name" => "test2", "value" => array(22,18)),
            array("name" => "ish", "value" => array(15,13))
        )

    );
// return your resoponse using laravel function instead of json_encode (this will include json header as well)
return response()->json($data)

Your jquery success function will be like below

success: function(data) {
    $.each(data, function(i, item) {
        // item for data 1
        $.each(item[i], function(i, row) {
            console.log(row.name)
            console.log(row.value)
        })
    });​
},

Please take not that i have improve the array in php structure to be more easier to read by jquery and more dynamic