Reputation: 43
I can't figure out why it is not working.
I have simple form and want to validate in client side with simple xmlrequest redirect to other page, do there server validation and work with validated parameter.
All in js vanilla and pure PHP.
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>
js validation:
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
});
After this I want to redirect to other page and do server validation
<?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';
}
}
?>
And the data is lost $_POST['number']
is not available.
Please can someone explain to me why it is not working and how to fix?
EDIT: I want to get input from user in first page and after js and PHP validation work with the input in second page.in my case add dynamically inputs field (the number of fields = number from first user input).
Upvotes: 0
Views: 37