首页 > 解决方案 > 我应该在 PHP 中使用什么条件来检查我的 AJAX 请求中的 JSON 数据是否已成功接收?

问题描述

我有一个输出 HTML 输入字段和按钮的 PHP 脚本。当用户输入某些内容时,然后将其提交给带有输入字段值的 AJAX 调用帖子到服务器。然后发送一封电子邮件。

$data = json_decode(file_get_contents("php://input"));   
if(!empty($data)){
  $mail = new PHPMailer(true);
  sendEmail($mail, $data->email);
}else{
  echo "<input id=\"SSB_input_email\" type=\"email\" name=\"email\" placeholder=\"Email\" required>
  <button id=\"SSB_DomainRegBtn\" type=\"button\" onclick=\"domainReg()\">Submit</button>";
}

//Define PHPMailer sendEmail
function sendEmail($param, $param01){
        try {
             //$param01 is the user email address
             //etc
...

然后在客户端

let domainReg = ()=>{
var emailReg = document.getElementById("SSB_input_email").value;
var xhr = new XMLHttpRequest(); 
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
   //modifies DOM here   
   }
  };
   xhr.open("POST", "../onlineStoreBackend/index.php", true);
   xhr.setRequestHeader("Content-Type", "application/json");
   var data = {email: emailReg};
   xhr.send(JSON.stringify(data));
   }

发送 AJAX 调用时,我似乎无法在服务器代码上获得条件评估为 true。我也试过

 if(isset($data->email)){...

这也不起作用,我在这里做错了什么?顺便说一句,PHPmailer 函数不是问题,因为我已经通过将条件显式设置为 true 来测试它,以便在页面加载后立即发送电子邮件并且这很有效,但这显然不是我需要的功能

标签: javascriptphpjsonajaxconditional-statements

解决方案


推荐阅读