2017-05-01 1 views
0

Ich möchte den Wert der CheckBox in php überprüfen. Entweder ausgewählt oder nicht. Ich versuche es irgendwie.Checking Wert des Kontrollkästchens mit PHP

JQuery

<script type="text/javascript"> 

    $(document).ready(function(){ 
     $("#save").click(function(){ 
      var checkBox = $("#boxV").is(':checked'); 

      $.ajax({ 
       url: "http://localhost/testing/test.php", 
       type:"POST", 
       async:true, 
       data:{ 
        "done":1, 
        "checkBox" : checkBox 
       }, 
       success: function(data){ 
         $('#result').append(data); 
       } 
      }); 
     }); 
    }); 



</script> 

PHP

<?php 
    if(!isset($_POST['checkBox'])){ 
     echo ('0'); 
    }else{ 
     echo ('1'); 
    } 
    ?> 

HTML

<li><input type="checkbox" id = "boxV" > Check</li><br> 

Das Problem ist, dass beide Male (Wählen ed, nicht ausgewählt) das result div ist mit 1 gefüllt. Gibt es ein Problem?

+4

Wie Sie vorbei 'checkBox' bedeuten seine immer gesetzt. also sollten Sie eine weitere Bedingung hinzufügen, um zu überprüfen oder nicht übergeben es nicht gesetzt –

+0

@Satpal HTML hinzugefügt wird – Amar

+0

@AhmedGinani Wie kann ich? – Amar

Antwort

0

können Sie checkBox Variable übergeben bedingt, wie unten beschreiben:

$(document).ready(function(){ 
     $("#save").click(function(){ 
      var checkBox = $("#boxV").is(':checked'); 
      if(checkBox) { 
       var data = { 
        'done': 1, 
        'checkBox': checkBox 
       }; 
      }else{ 
       var data = { 
        'done': 1,      
       }; 
      } 
      $.ajax({ 
       url: "http://localhost/testing/test.php", 
       type:"POST", 
       async:true, 
       data:data, 
       success: function(data){ 
        $('#result').append(data); 
       } 
      }); 
     }); 
    }); 
+0

warum down votes? Dies ist auch die Lösung. Es ist nicht zwingend, dass ein Problem mit nur einer Lösung gelöst werden kann. –

+0

Lösung wird daher nicht die Down-Vote erklärt. –

+0

@Edwin - Ich habe meine Änderungen beschrieben, aber FYI down vote bedeutet, dass diese Informationen nicht voll genutzt werden, siehe hier http://stackoverflow.com/help/privileges/vote-down –

0

Ihre $ _POST [ 'checkBox'] wird immer dann gesetzt werden, entweder 0 oder 1. So Ihre PHP wie this- aussehen sollte

<?php 
    if(isset($_POST['checkBox']) && $_POST['checkBox'] === '1'){ 
     echo ('1'); 
    }else{ 
     echo ('0'); 
    } 
    ?> 
1

In PHP, die isset Funktion testet, ob das Array das Element enthält, nicht, ob der Wert true. Da Sie setzen:

data:{ 
    "done":1, 
    "checkBox" : … 
} 

isset wird immer wahr zurück.

Normalerweise sehen Sie dieses Verhalten nicht in einer normalen Form, da der Browser dies anders macht: Wenn das Kontrollkästchen nicht aktiviert ist, wird der Browser es komplett auslassen. Da Sie jedoch Ajax verwenden, implementieren Sie Ihr eigenes Verhalten, indem Sie es immer einbeziehen.

In PHP können Sie den folgenden Test verwenden:

if(isset($_POST['checkBox']) && $_POST['checkBox']) { 
    // checked 
} 
else { 
    // unchecked 
} 

Bitte beachte, dass ich den Test auf einen positiven verändert haben. Wenn Sie wirklich eine negative wollen:

if(!isset($_POST['checkBox']) || !$_POST['checkBox']) { 
    // unchecked 
} 
else { 
    // checked 
} 

Alternativ können Sie Ihre JavaScript-Logik neu zu schreiben, um nur das Kontrollkästchen enthalten, wenn der Wert true.

0
$(document).ready(function(){ 
    $("#save").click(function(){ 

    var chkVal = $('input[name$=chkBox]:checked').val(); 
    var checkBox; 
    if(typeof(chkVal) != 'undefined'){ 
     checkBox = 1; 
    }else{ 
     checkBox = 0; 
    } 

    $.ajax({ 
      url: "http://localhost/testing/test.php", 
      type:"POST", 
      async:true, 
      data:{ 
       "done":1, 
       "checkBox" : checkBox 
      }, 
      success: function(data){ 
        $('#result').append(data); 
      } 
     }); 
    }); 
}); 

PHP-Code

<? php 
    if($_POST['checkBox'] != 1){ 
    echo ('0'); 
    }else{ 
    echo ('1'); 
    } 
?> 

HTML

<li><input type="checkbox" id = "boxV" name="chkBox" value="1"> Check</li> 
0

isset Funktion überprüft, ob die Variable gesetzt ist, wird es nicht den Wert der Variablen überprüfen. Wenn eine Variable den Wert false (0) hat, wird die Variable gesetzt, weil die Variable einen Wert hat. Egal, ob wahr oder falsch. Sie senden "checkBox" jedes Mal in ajax, also wird bei jedem Aufruf Ihre Variable gesetzt. Dafür müssen Sie dies verwenden.

if($_POST['checkBox']) { 
    //true 
} 

oder

if($_POST['checkBox'] === true){ 
//true 
} 
Verwandte Themen