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

前端 未结 6 1111
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-31 17:17

I\'ve been using Serialize() to pass checkbox form data with Post() for a basket that can hold multiple items of the same category.

When I post them using the submit

相关标签:
6条回答
  • 2020-12-31 17:39

    Here is my metacode fragment, which works fine for me ...

        var f={};  
    
        f.text = "SOME DATA";
        f.any_other_field = some_other_value;
        f.items = [];
    
        $("#droppable .or").each(function(ee){
              var tmp={};
              tmp.id    = $(this).data("cid");
              tmp.name  = $(this).find(".ornazev").text();
              tmp.price = $(this).data("price");
              tmp.currency = $(this).data("currency");
              tmp.ks    = 1;  
              f.items.push(tmp);
        });
        $.ajax({
          type: "POST",
          url: urlsave,
          data: {"f":f},
          dataType: "text",
    .....
    
    0 讨论(0)
  • 2020-12-31 17:44

    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"))
    
    0 讨论(0)
  • 2020-12-31 17:49
    $.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*/
    }
    
    0 讨论(0)
  • 2020-12-31 17:50

    From the jQuery docs:

    For a form element's value to be included in the serialized string, the element must have a name attribute. Values from checkboxes and radio buttons (inputs of type "radio" or "checkbox") are included only if they are checked.

    Check your code for that first. Hard to help further without seeing your code.

    0 讨论(0)
  • 2020-12-31 17:51

    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);
    
    0 讨论(0)
  • 2020-12-31 17:53
    $.ajax({
        type:   'post',
        cache:  false,
        url:    './ajax.php',
        data:   { arrayData }
    });
    

    You must use {} to contain the { arrayData } variable.

    then echo $_POST[arrayData]; will yield Array. If not, it will not send array value.

    0 讨论(0)
提交回复
热议问题