I'm trying to combine a form.submit() call with a jquery/ajax call to get a response from my php login script - I've just spent a few hours trying to hack together some of the hundreds of posts/examples on a similar topic but am out of ideas now so am hoping someone can help.
My sign in form looks like this...
<form id ="signInForm" action= "/userManagement/proxy_process_login.php" method="post" name="login_form"> <input required id="signInUserId" name="email" type="text" placeholder="Username/Email" class="input-medium"> <input required id="signInPassword" name="password" type="password" placeholder="Password" class="input-medium"> <button id="signin" name="signin" class="btn btn-success" onclick="signInSubmit(this.form, this.form.signInPassword);">Sign In</button> </form> The function signInSubmit() (called by the button's onclick) simply validates the text fields, and replaces the plain text password with a hashed version before finally calling "form.submit()", like this...
//ommited a bunch of text input validation var p = document.createElement("input"); form.appendChild(p); p.name = "p"; p.type = "hidden"; p.value = hex_sha512(password.value); password.value = ""; // Make sure the plaintext password doesn't get sent. form.submit(); My PHP script (proxy_process_login) also works fine before adding any jquery/ajax and essentially does this...
if (login($email, $password, $mysqli) == true) { // Login success (ok to reload existing page) header("Location: ../index.php?login=success"); exit(); } else { // Login failed (do NOT want to reload page - just message "fail" back via AJAX so I can update page accordingly) echo "fail"; exit(); } But given the route I'm taking to submit the form, I'm struggling to incorporate an Ajax example - because I've got this new "form" variable (with the hashed p variable appended), so I can't use an Ajax call which refers back to the form using jquery like this...
$.ajax({type:'POST', url: '/userManagement/proxy_process_login.php', data:$('#signInForm').serialize(), success: function(response) { console.log(response); }}); (because the jquery reference doesn't include the new variable, and I've already specified the php script in the action attribute of my form)
And I also can't call something like "serialize()" on my "form" variable inside signInSubmit().
Any ideas on an appropriate way to structure a solution to this?! Thanks!