我是最初的程序员。我学习PHP已有很短的时间,目前我正在为喜欢读书的人编写社交媒体应用程序。几天以来,用户注册是一个问题,将表单放在“模式”中并使用JS添加到那里,问题是发送表单后页面会刷新,因此我想问一下是否有可能它将返回验证结果而不刷新的代码脚本,并且在将数据正确发送到数据库之后,出现了有关注册的信息。
这是所有文件代码的链接:https://hastebin.com/pudisakowi.xml
抱歉,这是一个愚蠢的问题,但我无法理解如何解决这个问题。
我尝试过这样的代码
$(document).ready(function() {
const regiterUrl = "link to the register_page.php";
$("#registerForm").on("submit", function(event) {
event.preventDefault();
const formData = $(this).serialize();
$("#login-text").fadeIn();
$("#div-form").hide();
$("#btn-register").attr("disabled", true);
$.ajax({
type: "post",
url: regiterUrl,
data: $("#registerForm").serialize(),
success: function(response) {
setTimeout(() => {
console.log(response);
$('#exampleModalCenter').modal('hide')
}, 2000);
},
error: function(response) {
alert("WYSTĄPIŁ BŁĄD");
}
});
});
}); 但它总是成功,什么也不会保存到数据库。
我将感谢您做事的方向,或指出当前代码中的错误。
答案 0 :(得分:0)
我快速浏览了一下,我认为令人耳目一新的问题是因为type =“ submit”
<button class="btn btn-info" type="submit" name="register">Zarejestruj</button>
您可以这样做:
<button class="btn btn-info register_btn" name="register">Zarejestruj</button>
比:
$(".register_btn").on("click", function(event)...
此外,您不需要为所有内容添加表单标签,因此可以删除表单标签行,如果要将数据传递给ajax,最好像这样写 数据:{param1:value,param2:value} 而是整个注册制定者...
我没有测试过,但是希望它能对您有所帮助。
欢呼
答案 1 :(得分:0)
如果发出请求时发生任何错误,则会调用JQuery AJAX错误回调。一旦从服务器收到合法响应,就会触发成功回调。
在这种情况下,您应该重写服务器端脚本以支持AJAX调用。并且您将不得不稍微更改客户端代码。请参考下面的代码示例。
if (isset($_POST)) {
$response['success'] = false;
//Set content type here, So the browser will be able to parse your response properly.
header('Content-Type: application/json');
//Data validation
if ($any_error) {
$response['errors'][] = 'Error Message';
} elseif ($another_error ) {
$response['errors'][] = 'Another Error Message';
} else {
//Your Form processing code
//You may create a flag($form_processing) to verify success/failure
if ($form_processing ) {
$response['success'] = true;
}
}
echo json_encode($response);
exit;
}
客户端代码
$(document).ready(function () {
const regiterUrl = "link to the register_page.php";
$("#registerForm").on("submit", function (event) {
event.preventDefault();
const formData = $(this).serialize();
$("#login-text").fadeIn();
$("#div-form").hide();
$("#btn-register").attr("disabled", true);
$.ajax({
type: "post",
url: regiterUrl,
data: $("#registerForm").serialize(),
datatype : "application/json",
success: function (response) {
if( response.success == true ) {
//Success
$('#exampleModalCenter').modal('hide')
} else {
var errors = response.errors;
//Code for display errors
}
},
error: function (response) {
alert("WYSTĄPIŁ BŁĄD");
}
})
})
});