所以我有点困惑。
我需要根据PHP的结果在AJAX中添加一个错误处理程序。
我想知道是否有办法在PHP中添加$success = error
或$success = success
这样的变量来触发AJAX函数。
我做了一些阅读,但我阅读的所有内容都涉及JSON。
这是我的PHP,其中包含$success
变量,但我不确定从哪里开始使用AJAX。
我并不是要求为我编写代码,只是一些指导。
if(isset($_POST['submit'])) {
require($_SERVER['DOCUMENT_ROOT']."/settings/functions.php");
$conn = getConnected("oversizeBoard");
if(empty($_POST['first_name'])) {
$success = "error";
echo "First Name Is Required.";
exit();
}
else {
$first_name = mysqli_real_escape_string($conn, $_POST['first_name']);
}
if(empty($_POST['last_name'])) {
$success = "error";
echo "Last Name Is Required.";
exit();
}
else {
$last_name = mysqli_real_escape_string($conn, $_POST['last_name']);
}
if(empty($_POST['email'])) {
$success = "error";
echo "Email Is Required.";
exit();
}
else {
$email = mysqli_real_escape_string($conn, $_POST['email']);
}
if(!empty($_POST['first_name']) && !empty($_POST['last_name']) && !empty($_POST['email'])) {
$checkEmail = mysqli_query($conn, "SELECT * FROM subscriptions WHERE email='$email'");
if(mysqli_num_rows($checkEmail) > 0){
$success = "error";
echo "You Are Already Subscribed!";
}
else {
if (!mysqli_query($conn,$checkEmail)) {
$subscribeQuery = "INSERT INTO subscriptions (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if (mysqli_query($conn, $subscribeQuery)) {
$success = "success";
echo "You Have Successfully Subscribed!";
}
else {
echo "Error: ".mysqli_error($conn);
}
}
}
mysqli_close($conn);
}
}
else {
echo "You Are not Authorized To View This Page.";
}
以及AJAX:
function submitForm() {
$.ajax({type:'POST', url: 'http://example.com/form/postSubscription.php', data:$('#subscription_form').serialize(),
error: function(response) { // if php variable is $success = "error"
notif({
msg: response,
type: "error",
position: "center"
});
},
success: function(response) { // if php variable is $success = "success"
notif({
msg: response,
type: "success",
position: "center"
});
}});
return false;
}
我需要使用JSON来实现这一点吗?或者有其他方法吗?
您可能不想使用echo "You Have Successfully Subscribed!";
等,而是想预先创建一个输出对象/数组,然后用所需的数据填充它。像这样:
$data['text']= "You Have Successfully Subscribed!";
$data['success'] = "success";
然后你会得到这样的东西:
header('Content-Type: application/json');
echo json_encode($data);
请确保在header
之前不要执行任何echo
语句,否则会出现错误。此外,除了json_encode
之外,您不想执行任何echo
语句,否则您的json可能无法正确解析。
在客户端,在你的$.ajax
中,你的成功是这样的:
$.ajax({ ...
success: function(response){
if(response.success=="success") {
$('#output').text(response.text);
}
}
});