Состояние флажка из HTML (JS) в PHP - PullRequest
0 голосов
/ 29 ноября 2018

Я новичок в JS, и я хочу получить значение из переменной в JS, отправить его по почте (или ajax) в файл PHP и увидеть текстовый дисплей.Дело в том, что я пробовал разные способы сделать это, но я всегда получаю неопределенный индекс в php.

Мой код ниже

index.html

 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>PRUEBA AJAX JS PHP HTML</title>

  </head>
 <body>
 <H1>prueba</H1>

    <input type="checkbox" name="switch" id="switch" >  



 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <script>

$("#switch").change(function () 
    {
        var checked=$("#switch").attr("checked");

        if(checked)
        {
            $("switch").removeAttr("checked");
            console.log("estado apagado switch 1");
            var estados="1";
            $.post("accion.php", {estado: "david"});

        }else
        {

            $("#switch").attr("checked","checked");
            console.log("estado encendido switch 1");
            var estados="2";
            $.post("accion.php", {estado: "david 2"});
        }
    });


 </script>
 </body>
 </html>

accion.php

 <?php 

 $est = $_POST['estado'];
 echo $est;

 if ($est=="david") {
 echo "no mameees";
 }else{
 echo "no mameees no se puso ";
 }


 ?>

У кого-нибудь есть идеи?

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

используйте

var checked = $('#switch').is(':checked');

вместо

var checked=$("#switch").attr("checked");
0 голосов
/ 29 ноября 2018

Вы можете позволить php проверять, был ли установлен флажок или нет при успешном обратном вызове от $ .post:

<!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>PRUEBA AJAX JS PHP HTML</title>

  </head>
 <body>
 <H1>prueba</H1>

    <input type="checkbox" name="switch" id="switch" >  



 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <script>

$("#switch").change(function () 
    {
        var checkbox = $("#switch");

        $.post("accion.php", {estado: checkbox.val()}, function(data){
             $("h1").html(data);
        });

    });


 </script>
 </body>
 </html>

accion.php

<?php 

 $checkbox = isset($_POST['estado']) && $_POST['estado'] == 'on'; // 'on' is the default checkbox value when you don't specify it in html

 if ($checkbox) {
 echo "it's been checked";
 }else{
 echo "it wasn't checked";
 }


 ?>

PS: при работе с ajax (проверьте $. Post options) я рекомендую использовать dataType: 'json', и ваш php должен ответить корректным JSON, у вас есть json_encode за это.

0 голосов
/ 29 ноября 2018

$("#switch").change(function () {
       var checked=$("#switch").prop("checked");
         if(checked)
        {
        console.log(checked);
        
        }else{
         console.log(checked);
        }    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
Switch <input type="checkbox" name="switch" id="switch" >

Использовать prop вместо атрибута, чтобы найти флажок или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...