Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从form.submit()到PHP获取Ajax响应_Javascript_Php_Jquery_Ajax_Forms - Fatal编程技术网

Javascript 从form.submit()到PHP获取Ajax响应

Javascript 从form.submit()到PHP获取Ajax响应,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我正在尝试将form.submit()调用与jquery/ajax调用结合起来,以从我的php登录脚本中获得响应——我刚刚花了几个小时试图将数百篇关于类似主题的帖子/示例中的一些拼凑在一起,但我现在没有主意了,希望有人能提供帮助 我的登录表单如下所示 <form id ="signInForm" action= "/userManagement/proxy_process_login.php" method="post" name="login_form"> <input

我正在尝试将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>    
//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();
 $.ajax({type:'POST', url: '/userManagement/proxy_process_login.php', data:$('#signInForm').serialize(), success: function(response) {
       console.log(response);
}});
在添加任何jquery/ajax之前,我的PHP脚本(proxy\u process\u login)也可以正常工作,并且基本上可以做到这一点

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示例——因为我有一个新的“form”变量(附加了散列的p变量),所以我不能使用像这样使用jquery引用表单的Ajax调用

<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>    
//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();
 $.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调用

解决方案:

<form id="myForm">
<!-- form body here --!>
</form>
$("#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.

})
HTML:

<form id="myForm">
<!-- form body here --!>
</form>
$("#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.

})

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

不幸的是,没有使用action属性对本机表单提交进行回调,过去使用它将您重定向到该页面并在那里显示结果

现在的现代方法是在修改默认提交后使用ajax调用

解决方案:

<form id="myForm">
<!-- form body here --!>
</form>
$("#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.

})
HTML:

<form id="myForm">
<!-- form body here --!>
</form>
$("#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.

})

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

不幸的是,没有使用action属性对本机表单提交进行回调,过去使用它将您重定向到该页面并在那里显示结果

现在的现代方法是在修改默认提交后使用ajax调用

解决方案:

<form id="myForm">
<!-- form body here --!>
</form>
$("#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.

})
HTML:

<form id="myForm">
<!-- form body here --!>
</form>
$("#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.

})

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

不幸的是,没有使用action属性对本机表单提交进行回调,过去使用它将您重定向到该页面并在那里显示结果

现在的现代方法是在修改默认提交后使用ajax调用

解决方案:

<form id="myForm">
<!-- form body here --!>
</form>
$("#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.

})
HTML:

<form id="myForm">
<!-- form body here --!>
</form>
$("#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.

})


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

你们都提交表单并调用ajax吗?您可以选择其中一种方式,也可以选择另一种方式。如果看到您完整的JSI正在努力将我修改过的表单(存储在一个变量中,并包含一个哈希密码)合并到ajax调用中,那就太好了——我知道我不能同时通过这两种方式提交。Danyamachine,我的JS的哪一部分?我在jquery/ajax方面没有什么可靠的东西,因为我无法找到解决问题的适当方法。作品如果看不到您尝试过的代码、错误日志、控制台输出,我就不知道您的尝试有什么不成功的地方。您是否都提交了表单并进行了ajax调用?您可以选择其中一种方式,也可以选择另一种方式。如果看到您完整的JSI正在努力将我修改过的表单(存储在一个变量中,并包含一个哈希密码)合并到ajax调用中,那就太好了——我知道我不能同时通过这两种方式提交。Danyamachine,我的JS的哪一部分?我在jquery/ajax方面没有什么可靠的东西,因为我无法找到解决问题的适当方法。作品如果看不到您尝试过的代码、错误日志、控制台输出,我就不知道您的尝试有什么不成功的地方。您是否都提交了表单并进行了ajax调用?您可以选择其中一种方式,也可以选择另一种方式。如果看到您完整的JSI正在努力将我修改过的表单(存储在一个变量中,并包含一个哈希密码)合并到ajax调用中,那就太好了——我知道我不能同时通过这两种方式提交。Danyamachine,我的JS的哪一部分?我在jquery/ajax方面没有什么可靠的东西,因为我无法找到解决问题的适当方法。作品如果看不到您尝试过的代码、错误日志、控制台输出,我就不知道您的尝试有什么不成功的地方。您是否都提交了表单并进行了ajax调用?您可以选择其中一种方式,也可以选择另一种方式。如果看到您完整的JSI正在努力将我修改过的表单(存储在一个变量中,并包含一个哈希密码)合并到ajax调用中,那就太好了——我知道我不能同时通过这两种方式提交。Danyamachine,我的JS的哪一部分?我在jquery/ajax方面没有什么可靠的东西,因为我无法找到解决问题的适当方法。作品没有看到您尝试过的代码、错误日志、控制台输出,我不知道你的尝试有什么不起作用。我认为海报的具体问题是在提交时添加一个表单字段,然后通过ajax帖子发送新表单字段的值。@danyamachine我没有给出用户问题的具体解决方案,而不是表单提交的通用算法,问题的标题很好地解释了用户需要什么,但是如果用户发现这个答案不清楚,他/她可能会发表评论以进一步澄清。我认为海报的具体问题是在提交时添加一个表单字段,然后通过ajax帖子发送新表单字段的值。@danyamachine我没有给出答案