我在index.php中有两个模态形式,一个用于登录,一个用于寄存器。从登录模式中,您可以访问注册表单。我希望在寄存器模式窗体中显示错误,而无需重新加载页面或重定向到另一个页面。 我使用ajax,但提交后,页面重定向到空白页register.php并显示1。
在寄存器表格中我有一个空div
<div id = "error-reg"></div>
register.php它是表单的动作,看起来像
if ($count == 0) {
if ($check == 1)
$query = "INSERT INTO ..
elseif ($check == 2)
$query = "INSERT INTO ..
else {
$query = "INSERT INTO ..
}
if ($db->query($query)) {
echo "1";
} else {
echo "2";
}
} else {
echo "3";
}
在js中我有
$("#btn-rg").on('submit',function (e) {
e.preventDefault();
var form=$(this);
$.ajax({
url : 'register.php',
type : 'POST',
data : $('#id02').serialize(),
success : function (msg) {
if(msg=="1") $('#error-reg').html('success');
},
error: function (msg) {
if(msg=="2") $('#error-reg').html('Error while registering.Please try again');
if(msg=="3") $('#error-reg').html('The username already exists.');
}
});
});
答案 0 :(得分:0)
在php中,您只需回显一个数字,浏览器会将其解释为成功。
您可以更改您的js文件:
$("#btn-rg").on('submit', function(e) {
e.preventDefault();
var form = $(this);
$.ajax({
url: 'register.php',
type: 'POST',
data: $('#id02').serialize(),
success: function(msg) {
if (msg == "1") $('#error-reg').html('success');
if (msg == "2") $('#error-reg').html('Error while registering.Please try again');
if (msg == "3") $('#error-reg').html('The username already exists.');
}
});
});
不确定它是否可行,您可以通过抛出http错误代码来调整您的php文件来替代。
if ($count == 0) {
if ($check == 1)
$query = "INSERT INTO .."
else if ($check == 2)
$query = "INSERT INTO .."
else {
$query = "INSERT INTO .."
}
if ($db->query($query)) {
echo "1";
} else {
echo "2";
http_response_code(400);
}
} else {
echo "3";
http_response_code(400);
}