Entonces, trato de actualizar los campos en mi base de datos (id [int], status [boolean]) usando una casilla de verificación con Ajax. Esto debe hacerse sin actualizar la página y sin usar un botón de envío. He probado varios tutoriales y ninguno parece funcionar para mí. Para nombrar algunos: Ajax actualizando la base de datos cuando se marca una casilla de verificación , casilla de verificación al cambiar la llamada ajax , actualizar la base de datos con la casilla de verificación
Por favor, realmente necesito ayuda con esto, he estado en esto durante días. Este es mi intento de hacerlo:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script src="jquery.min.js"></script> </head> <body> <input type="checkbox" name="action1" id="action1" title="Action 1" value="1"/> <script type="text/javascript"> $("#action1").change(function () { var value = $(this).val(); $.ajax({ type: "POST", url: "update.php", async: true, data: { action1: value // as you are getting in php $_POST['action1'] }, success: function (msg) { alert('Success'); if (msg != 'success') { alert('Fail'); } } }); }); </script> </body> </html> <?php $servername = "localhost"; $username = "root"; $password = ""; $database = "api"; // Create connection $conn = new mysqli($servername, $username, $password, $database); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } //echo "Connected successfully"; if($_POST['action1']==1){ //as used variable name "value" in ajax post data $sql = "UPDATE toggle SET status = '1' WHERE id = '1'"; //query was incomplete and missing ";" echo 'success'; } else{ $sql = "UPDATE toggle SET status = '0' WHERE id = '1'"; // missing ";" echo 'success'; } $result=$conn->query($sql); ?>Su archivo de actualización devuelve "éxito" sin importar qué datos se le envíen. Pruébalo de esta manera:
índice.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> </head> <body> <input type="checkbox" name="action1" id="action1" title="Action 1" value="2"/>Action <script type="text/javascript"> $("#action1").change(function () { var value = $(this).val(); $.ajax({ type: "POST", url: "update.php", async: true, data: { action1: value // as you are getting in php $_POST['action1'] }, success: function (msg) { alert(msg); } }); }); </script> </body>actualizar.php
<?php $servername = "localhost"; $username = "root"; $password = ""; $database = "stackoverflow"; // Create connection $conn = new mysqli($servername, $username, $password, $database); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } if($_POST['action1']==1){ $sql = "UPDATE toggle SET status = '1' WHERE id = '1'"; echo 'success'; } else{ $sql = "UPDATE toggle SET status = '0' WHERE id = '1'"; echo 'fail'; } $result=$conn->query($sql); ?>