JQuery/AJAX & PHP - 使用 .load() 函数时 isset() 出错



我的网站上有一个注册页面,我想为它实现PHP和AJAX验证。我将展示我的代码模板(我的代码要大得多(,试图解释这个问题。

注册.php

<!DOCUMENT html>
<html>
<head>
<script>
$(document).ready(function(){
$("#signupForm").submit(function(event){
event.preventDefault();
var firstNameInput = $("#firstName").val();
var lastNameInput = $("#firstName").val();
$(".messageForm").load("inculdes/signup.script.php", {
firstName: firstNameInput,
lastName: lastNameInput
});
});
});
</script>
</head>
<body>
<form id="signupForm" action="includes/signup.script.php" method="POST">
<input id="firstName" type="text" name="firstName">
<input id="firstName" type="text" name="firstName">
<button id="submit" name="submit" type="submit">Submit</button>
<div class="messageForm"></div>
</form>
</body>
</html>

注册.script.php

<?php
if (isset($_POST['submit'])) {
include "dbconn.script.php";
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
//Validators for inputs in PHP with various error messages (1-15) and database INSERT and SELECT functions.
...
} else {
echo "<span>Error 16</span>";
exit();
}
}
?>
<script>
// JQuery validator for inputs and CSS style changers based on errors
...
</script>

我的问题是,当我点击提交按钮时,我会收到错误消息"错误16",所以我的函数跳过整个PHP脚本,不将数据插入数据库。我得出的结论是,问题是因为变量$_POST['submit']没有设置,因为当我将第一行代码更改为if (!isset($_POST[submit'']))时,它的工作方式很有魅力,但我不想失去阻止用户在浏览器的URL字段中键入signup.script.php并运行它的能力。如何纠正这一点?我看的教程有这样的代码,在这种情况下,它可以毫无问题地工作。

附言:如果需要解决这个问题,我会扩展我的代码,因为我想腾出空间,所以我给出了它的简写版本

您只是不在请求中发送"submit"。你可以在这里添加:

$(".messageForm").load("inculdes/signup.script.php", { 
firstName: firstNameInput, 
lastName: lastNameInput, 
submit: 1 
});

或检查isset($_POST['firstName'])

旁注:如果没有用load()传递的对象,它将是一个GET请求。值得记住。。。

请求方法

如果数据是作为对象提供的,则使用POST方法;否则,假定为GET。

文档

根据jQuery.load((的jQuery文档(这是一种人手不足的jQuery.ajax方法(,如果这是$_GET而不是$_POST,这听起来很像。。。最好将类似jQuery.ajax((的东西与method: 'POST'结合使用,或者在PHP中检查$_GET

亲爱的,仔细检查您的JavaScript代码

event.preventDefault(); // Preventing default form submission
$(".messageForm").load("inculdes/signup.script.php", {
firstName: firstNameInput,
lastName: lastNameInput
});

仅将firstName和lastName发布到signup.script.php

您正在尝试检查isset($_POST['submit'])这肯定是错误的,直到你在帖子中通过"提交",比如firstName和lastName,你已经通过了,比如下面的

$(".messageForm").load("inculdes/signup.script.php", {
firstName: firstNameInput,
lastName: lastNameInput,
submit: 'yes'
});

希望它能帮助

最新更新