Passaggio array tramite ajax

localhost.nicola

Utente Attivo
11 Dic 2015
58
2
8
Buon giorno,
non riesco a capire come poter passare un array con ajax a php.

Ad esempio come si fa per la selezione multipla tramite le checkbox in HTML in cui basta assegnare al nome dell'elemento un array (name='Group[]').

Grazie a tutti.
 

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
ti posto un esempio,
ho definito la tabella direttamente in javascript, altrimenti avrei dovuto creare anche il form,
in ogni caso passo la tabella con Ajax a php e la restituisco "formattata" per la visualizzazione,
credo sia semplice da riutilizzare
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
    <head profile="http://gmpg.org/xfn/11">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>jQuery AJAX arrays</title>
        <script type="text/javascript" src="jquery.min.js"></script>
        <script type="text/javascript">

$(document).ready(function(){

//    $('your selector').click(function(e){
//        e.preventDefault();
//        your statements;
//    });

    // you can use the above or the one shown below

    $('#myButton').bind("click",function()
    {
//        alert( "Handler for .click() called." );

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

        $.ajax
        ({
            type:    'post',
            cache:   false,
            url:     'esempio_7.php',
            data:    data,
            success: function(response) { $('#myDiv').html(response); },
            error:   function()         { alert("malfunzionamento ajax"); }
        });

    });

});

        </script>
    </head>
    <body>
        <input id="myButton" type="button" style="width: 130px; height: 60px" value="send AJAX" />
        <br /> <br />
	<div id="myDiv"> </div>
    </body>
</html>
PHP:
<?php

function show_var($variable)
{
    $tabella = "<table border='1'>"
             . "<thead><tr><td><b>KEY</b></td><td><b>VALUE</b></td></tr></thead>"
             . "<tbody>";

    foreach ($variable as $key => $value)
    {
        if ($key !== "_SERVER")
        {
            if ( is_array($value) or is_object($value) )
            {
                $tabella .= "<tr><td>".$key."</td><td>".show_var($value)."</td></tr>";
            }
            else
            {
                if ( empty($value) )   $value = 'empty';
                if ($value === true)   $value = 'true';
                if ($value === false)  $value = 'false';
                if ($value === null)   $value = 'null';

                $tabella .= "<tr><td>".$key."</td><td>".$value."</td></tr>";
            }
        }
    }
    $tabella .= "</tbody>";
    $tabella .= "</table>";
    return $tabella;
}

$tabella = show_var($_POST);
echo $tabella;
?>
 

localhost.nicola

Utente Attivo
11 Dic 2015
58
2
8
Grazie Marino per la risposta ma ho risolto da solo con la funzione serialize(). In questo modo riesco a passare tutti gli ID che mi servono con due semplice righe di codice:
Codice:
//ESEMPIO PER GESTIRE UN INVIO DI MAILING CON AJAX

$("#Test").click(function(){
	var Gruppi = $("input[type='checkbox']").serialize()
		var IdModello = $("#IdModello").val();
		
$.ajax({
  type: "GET",
  url: "Test/index.php",
  data:  Gruppi + "&IdModello=" + IdModello,
  dataType: "html",
  success: function(Risposta){
    $("#Risposta").html(Risposta );
  },
  error: function(){
    alert("Chiamata fallita, non trovo il file..");
  }
	});
});
 
Ultima modifica di un moderatore:

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
funzione serialize().
si non l'ho usata perché, da qualche parte ho letto che, jQuery la esegue in modo autonomo, a partire dalla versione 1.4.x
in effetti il codice "Ajax" è praticamente identico ed anche senza la funzione da te citata, lavora correttamente