gpt4 book ai didi

javascript - 获取从 form.submit() 到 PHP 的 Ajax 响应

转载 作者:行者123 更新时间:2023-11-28 18:58:48 25 4
gpt4 key购买 nike

我正在尝试将 form.submit() 调用与 jquery/ajax 调用结合起来,以从我的 php 登录脚本获取响应 - 我刚刚花了几个小时尝试将数百个帖子中的一些拼凑在一起/类似主题的示例,但我现在没有想法,所以希望有人可以提供帮助。

我的登录表单如下所示...

<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>

函数signInSubmit()(由按钮的onclick调用)只是验证文本字段,并在最终调用“form.submit()”之前用散列版本替换纯文本密码,如下所示...

//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();

我的 PHP 脚本(proxy_process_login)在添加任何 jquery/ajax 之前也可以正常工作,并且本质上是这样做的......

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();
}

但是考虑到我提交表单的路线,我正在努力合并一个 Ajax 示例 - 因为我已经有了这个新的“表单”变量(附加了散列 p 变量),所以我可以' t 使用 Ajax 调用,它使用 jquery 引用回表单,如下所示...

 $.ajax({type:'POST', url: '/userManagement/proxy_process_login.php', data:$('#signInForm').serialize(), success: function(response) {
console.log(response);
}});

(因为jquery引用不包含新变量,并且我已经在表单的action属性中指定了php脚本)

而且我也无法在signInSubmit()内的“form”变量上调用“serialize()”之类的东西。

关于构建解决方案的适当方法有什么想法吗?!谢谢!

最佳答案

不幸的是,使用操作属性的 native 表单提交没有回调,它过去用于将您重定向到该页面并在那里显示结果。

现在的现代方法是在防止默认提交后使用ajax调用。

解决方案:

HTML:

<form id="myForm">
<!-- form body here --!>
</form>

Javascript:

$("#myForm").submit(function(e){
e.preventDefault();//prevent default submission event.
//validate your form.
//disable your form for preventing duplicate submissions.
//call you ajax here.
//upon ajax success reset your form , show user a success message.
//upon failure you can keep your fields filled , show user error message.

})

这是我在我做的任何项目中使用的典型算法,我建议使用 parsley JS 用于前端验证。

关于javascript - 获取从 form.submit() 到 PHP 的 Ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33044383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com