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.
 
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;
?>
 
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:
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
 

Discussioni simili