Ajax da checkbox

Ali82

Nuovo Utente
10 Apr 2012
7
0
0
Ciao a tutti,
spero che se riusciate ad aiutarmi, ho un semplice problema, praticamente ho una lista di checkbox a cui corrisponde il relativo nome,
e selezionando queste checkbox dovrei passare la lista dei nomi selezionati all'altro file, tramite GET o ancora meglio in POST.

Per ora avrei provato a fare cosi:
PHP:
function selezione() {
. . . 
var lista = document.pietanza.chks;
var contatore=document.pietanza.lenght;
var lista_finale = new Array (0);
var i=0;
while(i<lista.length) {
if (lista[i].checked){
lista_finale.push(list[i]);
}
i++;}
xmlhttp.open("GET","pietanzeordinate.php?q="+lista_finale,true);
xmlhttp.send();
}

...e il form:

PHP:
<form name="pietanza">
<input type="checkbox" name="torta" onChange="selezione()" value="torta" id="torta" />torta</br>
<input type="checkbox" name="brodo" onChange="selezione()" value="brodo" id="brodo" />brodo</br>
<input type="checkbox" name="pasta" onChange="selezione()" value="pasta" id="pasta" />pasta</br>
<input type="checkbox" name="carne" onChange="selezione()" value="carne" id="carne" />carne</br>

Mi sapete aiutare??

grazzzzzie!
 
diciamo che in linea di massima il concetto è buono..
solo che non mi va, io ho fatto così:
PHP:
var xmlHttp = getXmlHttpObject();
    
    // come parametri richiede l'identificativo del tag dove mostrare l'esito dell'elaborazione 
    // e la pagina che si occuperà di elaborare i dati e fornire la risposta
    selezione("demo","pietanzeordinate.php"){    
        
        stringaPost();        
        xmlHttp.open('POST', "pietanzeordinate.php", true);    
        xmlHttp.onreadystatechange = function() {
            // nell attesa della risposta possiamo modificare il contenitore inserendo anche un immagine loading
            document.getElementById("demo").innerHTML="Attendere prego";
            if(xmlHttp.readyState == 4) { 
                if (xmlHttp.status == 200) {     
                    // mostriamo il risultato dell'elaborazione
                    document.getElementById("demo").innerHTML=xmlHttp.responseText;
                }
            }
        };    
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");    
        xmlHttp.send(stringa);
    }

    // funzione che preleva i valori dai campi e crea la stringa da passare alla chiamata ajax
    function stringaPost(){
        stringa = "";
        var form = document.pietanza;
        var elementi = form.elements.length;
 
        for(var i = 0; i < elementi; i++){
            if(form.elements[i].value = checked){
                stringa.push(form.elements[i].name);
            } 
        }
    }
        
        
    function getXmlHttpObject() {
        
        var xmlHttp=null;
        if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        }	
        if (window.ActiveXObject) {
            xmlHttp =  new ActiveXObject("Microsoft.XMLHTTP");
        }
	
        return  xmlHttp;
    }
</script>
. . . 

<form name="pietanza"> 
<input type="checkbox" name="torta" onChange="selezione()" value="torta" id="torta" />torta</br> 
<input type="checkbox" name="brodo" onChange="selezione()" value="brodo" id="brodo" />brodo</br> 
<input type="checkbox" name="pasta" onChange="selezione()" value="pasta" id="pasta" />pasta</br> 
<input type="checkbox" name="carne" onChange="selezione()" value="carne" id="carne" />carne</br> 
</form>
<div id="demo">demo!</div>

e per completezza il file pietanzeordinate.php è il seguente:
PHP:
$t=$_POST['stringa'];


echo var_dump($t);


Praticamente quando seleziono una delle checkbox non succede nulla :(

Dove sbaglio?
 
ciao,
beh, a parte che non hai aperto il tag script e non hai messo function davanti a selezione ti ho modificato altre cosette

prova cosi

PHP:
<script type="text/javascript">
    var xmlHttp = getXmlHttpObject();

   
    function selezione(){    

        stringaPost();        
        xmlHttp.open('POST', "pietanzeordinate.php", true);    
        xmlHttp.onreadystatechange = function() {
            // il messaggio di attesa direi che non serve in questo caso
            if(xmlHttp.readyState == 4) { 
                if (xmlHttp.status == 200) {     
                    // mostriamo il risultato dell'elaborazione
                    document.getElementById("demo").innerHTML=xmlHttp.responseText;
                }
            }
        };    
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");    
        xmlHttp.send(stringa);
    }

    // ho messo checked invece che value
    function stringaPost(){
        stringa = "";
        var form = document.forms[0];
        var elementi = form.elements.length;
 
        for(var i = 0; i < elementi; i++){
            if(i < elementi-1){
                stringa += form.elements[i].name+"="+form.elements[i].checked+"&";
            }else{
                stringa += form.elements[i].name+"="+form.elements[i].checked;
            } 
        }
    }


    function getXmlHttpObject() {

        var xmlHttp=null;
        if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        }    
        if (window.ActiveXObject) {
            xmlHttp =  new ActiveXObject("Microsoft.XMLHTTP");
        }

        return  xmlHttp;
    }
</script>

. . . 

<form method="post" action="ali82.php"> 
    <input type="checkbox" onclick="selezione()" name="torta"/>torta<br/> 
    <input type="checkbox" onclick="selezione()" name="brodo"/>brodo<br/> 
    <input type="checkbox" onclick="selezione()" name="pasta"/>pasta<br/> 
    <input type="checkbox" onclick="selezione()" name="carne"/>carne<br/>
</form>
<div id="demo">demo!</div>

pietanzeordinate.php

PHP:
<?php
// avrai come chiave il name del checkbox e come valore true se selezionato o false se no (formato stringa mi pare)
foreach ($_POST as $key => $value) {
    if ($value == 'true') {
        echo $key . "<br/>";
    }
}
?>
 
Ultima modifica:

Discussioni simili