• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

311
Views
JavaScript event.preventDefault() enviar datos del botón en _POST

Hay algo en lo que parece que no puedo encontrar documentación:

Tengo este formulario con varios botones. Los botones tienen sus propias acciones asociadas y el botón Enviar está destinado a enviar datos para su almacenamiento. Todas las acciones se manejan en PHP en el lado del servidor.

La razón principal para enviar el formulario con XMLHttpRequest es para evitar que la página se vuelva a cargar para el cliente.

 <form action="/path/to/action.php" method="post" onsubmit="return submitForm(event)"> <input type="text" name="comment"> <button name="action" value="new_action">Action</button> <!-- more fields & buttons ... --> <input type="submit" name="submit" value="submitted"> </form>

La función submitForm() es así:

 function submitForm(event) { event.preventDefault(); var data = new FormData(event.target); console.log([...data]); var request = new XMLHttpRequest(); request.open("POST", event.target.getAttribute("action"), true); request.send(data); request.onreadystatechange = function() { if (request.readyState === 4 && request.status === 200) { document.open(); document.write(request.responseText); document.close(); } } return false; }

Todo funciona como se esperaba excepto un detalle. Debido a preventDefault() o al return false en onsubmit , los valores de envío/botón no se muestran en la matriz $_POST en el lado del servidor.

Necesito estos valores para que cuando se haga clic en los botones, se activen ciertas acciones, pero solo si se hizo clic en los botones asociados y están en $_POST .

Hasta ahora no he podido encontrar cómo y por qué esto funciona como lo hace. ¿Alguien tiene información de fondo sobre esto o una solución?

Obviamente, podría agregar una función onclick a los botones que agrega manualmente su valor a los datos enviados si se hace clic, pero me parece que no debería ser necesario.

over 3 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Show me some job opportunities
There's an error!