Pass multidimensional array to php

0

I'm struggling with a problem a days ..

This is the following, I have a multidimensional array and I want to pass as a parameter in a ajax request to a php file, but when I am doing this what is returning is a php empty. I have no idea why, I researched and I did not find anything that corresponded to my doubt.

If someone can give me a light!

Follow the codes!

// Criando o array global
var dados = new Array();
dados[contador] = new Array();
dados[contador]['usuarios'];
dados[contador]['quantidade'];

var usuario = false; //Verificando se usuario já existe for (var i = 0; i < dados.length; i++) { if (dados[i]['usuarios'] === usuarioDivisao) { dados[i]['usuarios'] = usuarioDivisao; dados[i]['quantidade'] = $("input[name='mailing_quantididade_html']").val(); usuario = true; break; } } if (!usuario) { dados[contador] = new Array(); dados[contador]['quantidade'] = $("input[name='mailing_quantididade_html']").val(); dados[contador]['usuarios'] = usuarioDivisao; contador++; } $("input[name='mailing_quantididade_html']").val("");

After populating them I'm passing as parameter to the php file

$('.atualizar').click(function () {
    $.ajax({
        url: 'Mailing/exportar.php',
        type: 'POST',
        data: {dados:  JSON.stringify(dados), caminho: 'MailingTemp/qualquernomeOcidental2.csv', usuario: usuarioDivisao},
        beforeSend: function () {
            $(".mailing #aguarde_pequena2").fadeOut(200);
            $(".mailing #aguarde_pequena").fadeIn(200);
        },
        success: function (data) {
            alert(data);
        }
    });
});
    
asked by anonymous 05.02.2015 / 12:36

1 answer

0

If you use a string index, when accessing an array, JavaScript will reset the array to a default object, and all Array methods and properties will produce undefined or incorrect results.

See:

var dados[0] = new Array();
dados[0] = new Array();
dados[0]['usuarios']; // neste momento dados[0] passa a ser um objeto do js
//para acessar o dado use: dados[0].usuarios;
//JSON.stringfy(dados); retornará "[[]]" por causa da despadronização do array

You can mount your array like this:

var dados[0] = new Array()
dados[0] = {usuarios:0, quantidade:0};
dados[1] = {usuarios:1, quantidade:1};

Ajax:

$('.atualizar').click(function () {
    $.ajax({
        url: 'Mailing/exportar.php',
        type: 'POST',
        data: {dados:  JSON.stringify(dados), caminho: 'MailingTemp/qualquernomeOcidental2.csv', usuario: usuarioDivisao},
        dataType: 'json', //Lembrado pelo Luis Henrique
        beforeSend: function () {
            $(".mailing #aguarde_pequena2").fadeOut(200);
            $(".mailing #aguarde_pequena").fadeIn(200);
        },
        success: function (data) {
            alert(data);
        }
    });
});

In PHP:

$arrDados = json_decode($_POST['dados']);
    
05.02.2015 / 13:20