为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 fetch 和 catch 引用对 PHP 文件做出反应

如何使用 fetch 和 catch 引用对 PHP 文件做出反应

PHP
潇湘沐 2024-01-19 17:17:40
我正在尝试使用 fetch 和 catch 方法将 JSON stringfy 请求发送到 PHP 文件,我可以执行某些函数。现在我没有收到任何错误,但我无法让该功能正常工作。        fetch('http://localhost/server/mail.php', {            method: 'POST',            redirect: 'follow',            headers : {                 'Content-Type': 'application/json',                'Accept': 'application/json'               },            body: JSON.stringify({ // Passes values to mail.php                name: inputName,                phone: inputPhone            }),        })        .then(response =>{            console.log(response);            if(response === 'success'){                history.push("/start"); // Route to another page                history.go(0);            }        })        .catch(function(err) { // Return error            console.log(err);        });如果我调试,console.log(response)我会收到包含以下内容的反应对象:响应{type:“cors”,url:“http://localhost/server/mail.php”,重定向:false,状态:200,ok:true,bodyUsed:false,...}最后,我使用 PHP Mailer 库通过它发送邮件的 PHP 代码,我之前在另一个项目中使用过相同的代码,应该可以正常工作。<?phpuse PHPMailer\PHPMailer\PHPMailer;use PHPMailer\PHPMailer\Exception;require './phpmailer/src/Exception.php';require './phpmailer/src/PHPMailer.php';require './phpmailer/src/SMTP.php';$name = $_POST['name'];$from = 'admin@yotamdahan.com'$to = 'admin@yotamdahan.com'; $message = $_POST['phone'];$subject = 'משתמש חדש';$mail = new PHPMailer();$mail->SMTPDebug = 0;$mail->CharSet = 'UTF-8';$mail->SMTPAuth   = true;$mail->Host   = "server270.web-hosting.com";$mail->Port       = 465;$mail->Username   = $to;$mail->Password   = "*******";$mail->SMTPSecure = "ssl";$mail->setFrom($from);$mail->Subject  = $subject;$mail->isHTML(true);$mail->Body = "שם השולח: " . $name . "\r\n <br/> הודעה: " . $message;$mail->addAddress($to, 'Yotam Dahan');if(!$mail->Send()){   echo "Error sending: " . $mail->ErrorInfo;}else{   echo "success";}我的问题是 PHP 没有发送电子邮件,我猜想,inputName并且InputPhone没有正确传递,因此代码无法运行,响应也不是success应有的样子。如何通过reactJS中的fetch和catch向PHP发送正确的POST请求?
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您正在发送数据,application/json但从$_POST获取数据application/x-www-form-urlencoded。


您可以使用FormData正确的内容类型创建数据,然后将URLSearchParams其传递FormData给获取函数的主体。


您可以像这样使用 FormData:


const formData = new FormData();


formData.append("name", inputName);

然后像这样发送


fetch('http://localhost/server/mail.php', {

  method: 'POST',

  redirect: 'follow',

  body: new URLSearchParams(formData)

});


查看完整回答
反对 回复 2024-01-19
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信