Ottenere valore da più checkbox

di il
6 risposte

Ottenere valore da più checkbox

Ciao a tutti, ho questi checkbox e vorrei ottenere il loro valore in jquery e usarlo con ajax per un file php, come faccio?

<input type="checkbox" value="cane" name="animali[]">
<input type="checkbox" value="gatto" name="animali[]">
<input type="checkbox" value="coniglio" name="animali[]">
<input type="checkbox" value="criceto" name="animali[]">

<script>
var checkbox = ?
</script>

6 Risposte

  • Re: Ottenere valore da più checkbox

    Ciao,

    per controllare le checkbox in jquery potresti fare così:
    $( ':checkbox' ).each( function() {
        // Fai quello che vuoi per ogni checkbox
    } );
    se vuoi tenere in considerazione solo quelle selezionate puoi specificarlo nel selettore
  • Re: Ottenere valore da più checkbox

    Il problema è che se lo passo usando formdata non funziona
    <input type='checkbox' name='genere[]' id='genere' value='Azione'>
    <input type='checkbox' name='genere[]' id='genere' value='Avventura'>
    <input type='checkbox' name='genere[]' id='genere' value='Horror'>
    <input type='checkbox' name='genere[]' id='genere' value='Romantico'>

    <script>
    var checkvalue= [];
    var formData = new FormData();
    $( '#genere:checked').each( function() {
    checkvalue= $("<?php echo $new_string;?>").val();
    } );

    formData.append('target',target);
    $.ajax({
    url : 'php/manage_novels.php',
    method : 'POST',
    processData: false,
    contentType: false,
    data : formData,
    success : function(title){

    }
    });


    </script>

    nel file php che devo richiamare mi da un messaggio di errore

    Warning: foreach() argument must be of type array|object, string given in C:\xampp\htdocs\_novel_paradise\administrator\php\manage_novels.php on line 108
  • Re: Ottenere valore da più checkbox

    [CODE]<!DOCTYPE html> <html> <body> <h1>Show Checkboxes</h1> <form action="/action_page.php"> <input type="checkbox" id="vehicle1" name="vehicle[]" value="Bike"> <label for="vehicle1"> I have a bike</label><br> <input type="checkbox" id="vehicle2" name="vehicle[]" value="Car"> <label for="vehicle2"> I have a car</label><br> <input type="checkbox" id="vehicle3" name="vehicle[]" value="Boat"> <label for="vehicle3"> I have a boat</label><br><br> <input type="submit" value="Submit"> </form> </body> </html> File www.domain.tld/action_page.ph [CODE]<?php if(isset($_GET['vehicle'][0]) && is_array($_GET['vehicle']) && count($_GET['vehicle']) <= 3) { $i = 0; foreach($_GET['vehicle'] as $key => $value) { if(!(is_string($value) && $key === $i)) { $stop = true; break; } else $i = $i + 1; } } if(isset($i) && !isset($stop)) { if($i != 0) $i = $i - 1; echo 'solo quando inviato, altrimenti pensa che è diverso da inviato'; } $value = null; $_GET['vehicle'] = null; unset($i, $stop, $key, $value, $_GET['vehicle']); Ciao scusa in HTML ogni id è univoco, il mio file html è con metodo GET e dovrebbe avere Content Type application/x-www-form-urlencoded ma è meglio specificarlo per avere la massima portabilità. Con questa codifica puoi solo inviare stringhe [Code]key%5B%5D=value&key%5B%5D=value&key%5B%5D=value con Percent Encoding e php dovrebbe trasformare in array [CODE]<?php $_GET['key'][0]; //value, $_GET/$_POST usa urldecode $_GET['key'][1]; //value, $_GET/$_POST usa urldecode $_GET['key'][2]; //value, $_GET/$_POST usa urldecode Significa che il file php nel foreach (l'esempio di trasformazione html stringa e conversione array in php) elabora un array o un'oggetto (giustamente i tipi di php non necessariamente coincide con Javascript) ma non una stringa.
  • Re: Ottenere valore da più checkbox

    Argus97 ha scritto:


    Il problema è che se lo passo usando formdata non funziona
    <input type='checkbox' name='genere[]' id='genere' value='Azione'>
    <input type='checkbox' name='genere[]' id='genere' value='Avventura'>
    <input type='checkbox' name='genere[]' id='genere' value='Horror'>
    <input type='checkbox' name='genere[]' id='genere' value='Romantico'>
    L'id nel DOM deve essere univoco.

    Argus97 ha scritto:


    $( '#genere:checked').each( function() {
    checkvalue= $("<?php echo $new_string;?>").val();
    } );
    Cosa contiene "$new_string"? La funzione each è come un ciclo che controlla tutti gli elementi che corrispondono ai selettori specificati, se ad ogni ciclo scrivi sulla stessa variabile alla fine restituirà solo l'ultimo valore, dovresti utilizzare un array. Per il selettore ecco un esempio:
    $( ':checkbox:checked').each( function() { });

    Argus97 ha scritto:


    $.ajax({
    url : 'php/manage_novels.php',
    method : 'POST',
    processData: false,
    contentType: false,
    data : formData,
    success : function(title){

    }
    });
    Nella chiamata Ajax invii come data la variabile formData che hai dichiarato ma utilizzato con altre variabili e non checkvalue.
  • Re: Ottenere valore da più checkbox

    $new_string è una variabile ottenuto da una colonna del database che riporto con PDO
  • Re: Ottenere valore da più checkbox

    Quando non riesci a proseguire devi semplificare il codice per intuire ove non fa ciò che ti aspetti.
    Ajax permette l'invio di stringhe tramite il metodo toString anche se stai usando l'oggetto, dunque fai [Code]//parlo di php var_dump($_POST); per adesso ometti la verifica dei valori inviati con quella della lista bianca del tuo database che comunque dovrà essere del testo separato da virgola es. stringa php [Code]//parlo di php $variabile = 'value1,value2,value3'; da confrontare in Jquery con [Code]//Parlo di Jquery $(this).val(); //Giustamente dopo l'interazione del click o del tuo codice e rimuovere la corrispondenza Operatore di uguaglianza e dello stesso tipo === es. espressione1 === espressione2.
Devi accedere o registrarti per scrivere nel forum
6 risposte