PHP中的Ajax错误报告不使用JSON

时间:2016-04-18 21:45:56

标签: php jquery json ajax

所以我有点困惑。

我需要根据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来完成此任务,还是有其他方式?

1 个答案:

答案 0 :(得分:2)

您可能希望预先创建输出对象/数组,然后使用所需的数据填充它,而不是使用echo "You Have Successfully Subscribed!";等。像这样:

$data['text']= "You Have Successfully Subscribed!";
$data['success'] = "success";

然后你完成了这样的事情:

header('Content-Type: application/json');
echo json_encode($data);

确保您在echo之前没有执行任何header语句,否则您将收到错误消息。此外,您不希望执行除echo以外的任何json_encode语句,否则您的json可能无法正确解析。

在客户端,在$.ajax中,您的成功将是这样的:

$.ajax({ ...
  success: function(response){
    if(response.success=="success") {
      $('#output').text(response.text);
    }
  }
});