Aquí hay un formulario PHP simple con un botón...
<form method="POST"> <div class="mb-3"> <button type='button' id ="btnnew1" class="btn btn-info" >submit</button> <p></p> </div> </form>Aquí están las funciones de Jquery que ejecutan un archivo PHP.
$(document).ready(function(){ $("#btnnew1").click(function(e){ if(!confirm('Are you sure?')){ e.preventDefault(); return false; } else{ $.ajax({ url: 'test.php', success: function(data) { $("p").text(data); } }); } }); });Y el test.php es el siguiente,
<?php echo 'Button1 clicked' ?> Mi pregunta es cómo modificar mi test.php si tengo varios botones.
Como ejemplo,
<form method="POST"> <div class="mb-3"> <button type='button' id ="btnnew1" class="btn btn-info" >submit</button> <p></p> </div> <div class="mb-3"> <button type='button' id ="btnnew2" class="btn btn-info" >submit</button> <p></p> </div> <div class="mb-3"> <button type='button' id ="btnnew3" class="btn btn-info" >submit</button> <p></p> </div> </form>El resultado debe ser,
If btnnew1 clicks--->echo("Button1 clicked); If btnnew2 clicks--->echo("Button2 clicked); If btnnew3 clicks--->echo("Button3 clicked);Actualizar:
¿Qué sucede si necesito ejecutar tres funciones php diferentes (sin ningún patrón)?
Ex: If btnnew1 clicks---> sleep(5) echo("Button1 clicked); If btnnew2 clicks---> sleep(15) echo("Button2 clicked by user); If btnnew3 clicks---> sleep(35) echo("Button3 clicked by user);Aquí estoy cambiando un poco su configuración predeterminada. Esto te ayudará como puedo entender. Puedes probar de la siguiente manera,
1) Cambie su botón al tipo de entrada ... También he agregado algunos CSS en línea. Si no te gusta puedes descuidarlo...
<input type="button" style="background-color: #3CBC8D;padding:3px;" class="button" name="fcn1" value="Update My Status"/> <input type="button" class="button" style="background-color: #3CBC8D;padding:3px;" name="fcn2" value="Update My Status" />Luego vaya a jquery y use como se muestra a continuación, cambie la función de éxito como desee. Aquí he usado un cuadro de alerta...
$(document).ready(function(){ $('.button').click(function(){ if(!confirm('Are you sure?')){ e.preventDefault(); return false; } else{ var clickBtnValue = $(this).attr('name'); var fetchdata= 'testme.php', data = {'action': clickBtnValue}; $.post(fetchdata, data, function (response) { // Response div goes here. alert("Updated successfully -"+response); }); } }); }); Finalmente cambie su testme.php de la siguiente manera,
if (isset($_POST['action'])) { switch ($_POST['action']) { case 'fcn1': fcn1(); break; case 'fcn2': fcn2(); break; } } function fcn1() { echo 'Button1 clicked'; exit; } function fcn2() { sleep(5); echo 'Button2 clicked'; exit; }Establece el nombre de cada botón: Botón 1
Envíe datos usando ajax: obtenga el texto del botón usando e.target.text y envíelo usando el método POST.
$.ajax({ type: 'POST', url: 'test.php', data: { buttonTitle: e.target.name}, success: function(data) { $("p").text(data); } });php: dentro de php use $_GET para obtener los datos que enviamos desde la interfaz.
if(isset($_POST['buttonTitle'])) { $buttonTitle = $_POST['buttonTitle']; echo $buttonTitle . " clicked"; }