Hola, no puedo entender por qué no funciona. Tengo un formulario simple y quiero validar en el lado del cliente con una simple redirección xmlrequest a otra página, hacer allí la validación del servidor y trabajar con parámetros validados. todo en js vanila y php puro.
html:
<form action="" novalidate="novalidate" autocomplete="off" id="name-group"> <div class="form-group"> <label for="number">*Number:</label> <input value="" type="text" name="number" id="number" class="form-control"> </div> <input type="submit" value="Submit" name="submit" id="submit" class="btn btn-primary"> </form>validación js:
document.getElementById("submit").addEventListener('click', function (event) { event.preventDefault(); let number = document.getElementById("number").value; let numberRegex = "^[0-9]$"; let errorMsg = ''; if (number.match(numberRegex)) { let xhr = new XMLHttpRequest(); let params = "number=" + number; xhr.open("POST", './uploadValidation.php',true) xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded') // xhr.onload = function () { // } xhr.send(encodeURI(params)); window.location.assign('./uploadValidation.php') } else { errorMsg = 'required number field'; } document.getElementById("errorMsg").innerHTML = errorMsg });después de esto quiero redirigir a otra página y hacer la validación del servidor
<?php //errors $errors = [ 'number' => '', ]; var_dump($_POST); //validation if (isset($_POST['submit'])) { $number = htmlentities(trim($_POST['number']), ENT_QUOTES, 'UTF-8'); echo true; //check for error in userName field if (!$number || mb_strlen($number) < 1) { $form_valid = false; $errors['number'] = '*required field'; } } ?>y los datos se pierden. $_POST['number'] no está disponible. Por favor, ¿alguien puede explicarme por qué no funciona y cómo solucionarlo?
EDITAR: Quiero obtener información del usuario en la primera página y después de que js y la validación de php funcionen con la entrada en la segunda página. En mi caso, agregue dinámicamente el campo de entrada (la cantidad de campos = número de la primera entrada del usuario).