php - 使用 ajax 提交表单:工作正常,现在不工作?
问题描述
我在 signup.php 中有以下 HTML 表单:
<form id="signup" action="" method="POST" autocomplete="off" autocomplete="false">
<div class="signup_row action">
<input type="text" placeholder="What's your Name?" name="name" id="name" class="signup" autocomplete="new-password" autocomplete="off" autocomplete="false" required />
<input type="text" placeholder="Got an Email?" name="email" id="email" class="signup" autocomplete="new-password" autocomplete="off" autocomplete="false" required />
<div class="g-recaptcha" style="margin-top:30px;" data-sitekey="6LeCkZkUAAAAAOeokX86JWQxuS6E7jWHEC61tS9T"></div>
<input type="submit" class="signup_bt" name="submit" id="submt" value="Create My Account">
</div>
</form>
我正在尝试使用 ajax 提交表单,而不刷新页面:
<!-- include files -->
<?php include 'assets/config.php';?>
<?php if(isset($_SESSION["CUSTOMER_ID"])){
header('Location: myaccount.php'); } ?>
<script>
$(function () {
$('form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'do_signup_check.php',
data:{"name":name,"email":email},
success: function () {
if(result == 0){
$('.signup_side').fadeOut(500).promise().done(function() {
$('.signup_side').load('do_signup.php',function(){}).hide().fadeIn(500);
});
}else{
$('.signup_side').fadeOut(500).promise().done(function() {
$('.signup_side').load('assets/login.php',function(){}).hide().fadeIn(500);
}
});
});
});
</script>
我将表单发布到 do_signup_check.php 并运行查询以查看用户是否已注册。echo 1 表示肯定结果,0 表示否定结果:
Do_Signup_Check.php:
<?php
session_start();
require 'assets/connect.php';
$myName=$_POST["name"];
$myEmail=$_POST["email"];
$check = mysqli_query($conn, "SELECT * FROM user_verification WHERE email='".$myEmail."'");
if (!$check) {
die('Error: ' . mysqli_error($conn)); }
if(mysqli_num_rows($check) > 0){
echo '1';
}else{
echo '0';
}
?>
如果结果为 0,那么 ajax 应该加载我的页面 do_signup.php。但很遗憾,它并没有走到这一步。它工作正常,然后我关闭计算机并返回它,现在它无法工作。
请问有人可以告诉我我哪里出错了吗?
解决方案
if(result == 0){
这里的结果没有在成功函数中使用:
你必须需要在这里传递结果变量:
success: function () {
作为:
success: function (result) {
现在,您可以使用您的条件if(result == 0){
其次,我建议你传递dataType: 'html'
你的ajax请求。
编辑:
您在代码中使用<?php if(isset($_SESSION["CUSTOMER_ID"])){
line,如果您没有session_start()
在代码中使用,则此检查将不起作用。
对于这一行,data:{"name":name,"email":email},
我没有看到name
,email
在您的代码中,您定义了您在 ajax 参数中使用的这两个变量。
推荐阅读
- python - `multiprocessing.Pool.map()` 似乎安排错误
- erlang - 如何解释 Erlang 代码行中的一组变量
- android - 从不同的屏幕更新对 Activity 所做的更改(Activity Stacking)
- java - 如何添加带有缓动的反弹动画?
- r - 在 r 中使用带引号的术语 strsplit 结果
- swiftui - SwiftUI:添加 .frame maxHeight 后,列表中的图像不再居中
- reactjs - 如何解决 RangeError:时间值无效
- java - 将更多动态运行时参数传递给 NodeJS 子进程
- python - 如何替换列表中的值,例如:- [5,4,6,1,2] 将 4 替换为 3?
- laravel - Laravel 5.6 更改面包屑导航语言