从form.submit()获取Ajax响应到PHP
Getting an Ajax response from a form.submit() to PHP
我试图结合一个表单。提交()调用与jquery/ajax调用得到响应从我的php登录脚本-我刚刚花了几个小时试图破解一些数百个帖子/例子在一个类似的主题,但我现在的想法,所以我希望有人可以帮助。
我的sign in form是这样的…
<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变量追加),所以我不能使用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()"
有什么合适的方法来构建解决方案吗?!谢谢!
遗憾的是,对于使用action属性的原生表单提交没有回调,过去使用它将您重定向到该页面并在那里显示结果。
现在的现代方法是在阻止默认提交后使用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进行前端验证。
相关文章:
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- Ajax响应转换
- 如何在数据表中设置从Ajax响应选中的复选框
- 在Javascript中的ajax响应之后未调用Dropdown事件
- RubyonRails-Ajax响应的问题
- Ajax:Ajax响应中的链接不起作用
- 如何执行ajax响应返回的javascript函数
- 带有 AJAX 响应或 AJAX 响应的 IF 条件.响应.Text 不起作用
- 正在检查ajax响应中的错误数据
- 如何从ajax响应中重新加载整个页面
- 如何使用jQuery/Ajax响应特定的提交按钮
- 是浏览器在AJAX响应中自动处理的HTTP标头
- Masony无法处理ajax响应
- 使用yii2表单等待ajax响应
- jquery返回ajax响应和用户定义的变量到函数
- 使用Ajax响应更新TextBox
- 如何在jquery ajax响应后设置jquery滑块的起始值
- Rails 4中不执行Ajax响应
- jquery解析ajax响应