jQuery ajax返回true,但在php中未显示正确的消息

我在ajax中编写了以下代码,向后端发送了一个请求

$.ajax({
      type: "POST",url: action,data: str,success: function(msg) {
        //alert(msg);

        if (msg == 'sent') {
            alert("success");
          $('#errormessage').html('<div class="alert alert-success">Email sent successfully.</div>');
          $('.contactForm').find("input,textarea").val("");
        }else if (msg == 'saved') {
          $("#sendmessage").removeclass("show");
          $("#errormessage").addClass("show");
          $('#errormessage').html('<div class="alert alert-warning">Email couldn\'t be sent but not too worry we got it in our database. We will get back to you.</div>');
          $('.contactForm').find("input,textarea").val("");
        }

         else {
          $("#sendmessage").removeclass("show");
          $("#errormessage").addClass("show");
          $('#errormessage').html(msg);
        }

      }
    });

php代码

$to_email = $set['Email'];

$headers = "From: ". $email;

//check if the email address is invalid $secure_check
$secure_check = sanitize_my_email($email);
if ($secure_check == false) {
    echo "Invalid input";
} else { //send email 
$query = mysqli_query($mysqli,"INSERT INTO emails(name,email,subject,message)VALUES('$name','$email','$sub','$msg')");
$mail = mail($to_email,$sub,$msg,$headers);

if($query and $mail){
    echo 'sent';
}else if($query and  !$mail){
    echo 'saved';
}else{
    echo $mysqli->error;
}

}

如果我发送电子邮件,则插入成功执行。我面临的问题是ajax无法打印正确的消息。它只执行显示已发送

其他部分

这部分代码不正确:

if (msg == 'sent') {
        alert("success");
      $('#errormessage').html('<div class="alert alert-success">Email sent successfully.   
       </div>');
      $('.contactForm').find("input,textarea").val("");
       }

相反,它仅显示已发送消息

else {
          $("#sendmessage").removeclass("show");
          $("#errormessage").addClass("show");
          $('#errormessage').html(msg);
        }
inuyasha7 回答:jQuery ajax返回true,但在php中未显示正确的消息

该问题很可能是因为您返回的是基于文本的响应,并且该值周围有空格,因此msg == 'sent'永远不会正确。

要解决此问题,您只需调用trim()即可删除空白:

if (msg.trim() == 'sent') {
  // your code...
}

或者,您可以更改PHP以返回序列化的数据结构,例如JSON或XML,以避免此问题。我建议这样做。

本文链接:https://www.f2er.com/3161180.html

大家都在问