Javascript Can';我不能让Ajax以我想要的方式与PHP一起工作
我在同一个页面上有一个登录和注册表单,我用jQuery隐藏了它,因此一次只有一个表单处于活动状态。当我激活注册表时,用一封与我的PHP if语句不匹配的电子邮件填写电子邮件字段,然后按submit,然后页面刷新并激活登录表单 我想要页面做的是运行PHP脚本,当PHP if语句失败时,它将阻止页面刷新,然后打印PHP else语句中的消息 代码如下所示: PHP: jQuery:Javascript Can';我不能让Ajax以我想要的方式与PHP一起工作,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我在同一个页面上有一个登录和注册表单,我用jQuery隐藏了它,因此一次只有一个表单处于活动状态。当我激活注册表时,用一封与我的PHP if语句不匹配的电子邮件填写电子邮件字段,然后按submit,然后页面刷新并激活登录表单 我想要页面做的是运行PHP脚本,当PHP if语句失败时,它将阻止页面刷新,然后打印PHP else语句中的消息 代码如下所示: PHP: jQuery: $(document).ready(function () { var request = $(this).se
$(document).ready(function () {
var request = $(this).serialize();
$("#registerform").on('submit', function (event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'registration.php',
data: request,
success: function(){
$(this).submit();
console.log("test");
},
error: function () {
event.preventDefault();
alert("fail");
}
});
});
});
我假设您的代码运行正常,并且您通过javascript中的post正确接收数据,那么只需进行这些更改
if ($count==0) {
if (preg_match('/^[a-z]{6}+[0-9]{2}+@student.westerdals.no+$/i', $email)) {
$query = "INSERT INTO members(email, password) VALUES('$email', '$hashed_password')";
$result = $DBcon->query($query);
if ($result){
header("Location: home.php");
}
else{
die("Some error");
}
die();
} else {
die("You must provide a valid student email!");
}
} else{
die("Email already taken!");
}
Put
var request=$(this).serialize()将>编码到提交函数中。我已经尝试过了,但是我得到了一个错误:“未定义的索引:中的请求…”引用了我的PHP中的“$request=$\u POST['request'];”。当我运行“print_r($_POST);”时,请求的值实际上正在被打印。现在我不断得到“Undefined index:request in…”在PHP中指的是我的“$request=$_POST['request'];”。当我运行“print_r($_POST);”时,请求的值实际上正在打印。请检查是否已将表单中的关键字名称用作“request”。只有当您没有$_POST[variable]的值时,才会显示此错误;所以,检查可变部分。还要检查它是否正确地传递给php。当我将要序列化的对象从“this”更改为实际的表单id“#registerform”时,它部分工作正常,不会从php中的else语句打印(“您必须提供有效的学生电子邮件”)。但是,在Ajax的错误部分,我得到了警报,但没有得到预防默认值。有什么建议吗?如果效果很好,那就去做吧。因为没有问题。或者创建一个显示错误的新php页面。然后使用重定向显示错误。或者简单地使用显示/隐藏方式来显示错误。隐藏您的错误消息。然后在ajax中,如果错误持续存在,则显示它。或者只是在ajax中用html打印错误。
if ($count==0) {
if (preg_match('/^[a-z]{6}+[0-9]{2}+@student.westerdals.no+$/i', $email)) {
$query = "INSERT INTO members(email, password) VALUES('$email', '$hashed_password')";
$result = $DBcon->query($query);
if ($result){
header("Location: home.php");
}
else{
die("Some error");
}
die();
} else {
die("You must provide a valid student email!");
}
} else{
die("Email already taken!");
}