How to pass multi-dimensional array with Jquery AJAX post? How to pass multi-dimensional array with Jquery AJAX post? arrays arrays

How to pass multi-dimensional array with Jquery AJAX post?


Jquery will take multi dimensional arrays directly, no need to serialize.

var data = {  foo:  123,  bar:  456,  rows: [    {      column1 : 'hello',      column2 : 'hola',      column3 : 'bonjour',    },    {      column1 : 'goodbye',      column2 : 'hasta luego',      column3 : 'au revoir',    },  ],  test1:{    test2: {      test3:  'baz'    }  }};

_Post Data in your PHP file would look like this

Array   (    [foo] => 123    [bar] => 456    [rows] => Array        (            [0] => Array                (                    [column1] => hello                    [column2] => hola                    [column3] => bonjour                )            [1] => Array                (                    [column1] => goodbye                    [column2] => hasta luego                    [column3] => au revoir                )        )    [test1] => Array        (            [test2] => Array                (                    [test3] => baz                )        )    )

Once you define your data multidimensional array, your Ajax could be as simple as

$.ajax({          type:           'post',          cache:          false,          url:            './ajax.php',          data:           data      });

If your post array may have fields that you don't know about, you can access your Post array in your php file easily with

$data = file_get_contents('php://input');$data = json_decode($data, true);


I did not find any good solution, so i solved this using JSON.stringify();here is my code

Client side :

var data = {a:{'foo':'bar'},b:{'this':'that'}};$.ajax({ url        : '/',         type       : 'POST',                                                       data       : {'data':JSON.stringify(data)},         success    : function(){ }       });

Server Side:

$data = json_decode($_POST['data']);print_r($data);// Result:// Array( "a" => Array("foo"=> "bar"), "b" => Array("that" => "this"))


$.post(url, {"myarray":arrayData}, function(data){/*stuff*/}, 'json');

server side you would access it for example with php

$myArray = $_POST['myarray'][0];foreach($myArray as $item){   /*logic here for picking apart your array*/}