php
文件未从axios
发布请求接收数据。表单提交后显示未定义的错误。我已经在react js
中创建了表单。所有字段和状态变量都正确显示。
axios({
method: 'post',
url: 'http://tulisuites.com/form.php',
headers: { 'content-type': 'application/json' },
data:JSON.stringify(this.state)
})
.then(result => {
this.setState({
mailSent: result.data.sent
});
console.dir(this.state);
})
.catch(error => this.setState({ error: error.message }));
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
header("Content-Type: application/json");
$rest_json = file_get_contents("php://input");
$_POST = json_decode($rest_json, true);
$subject = "Enquiry form";
$to = "sample@domainname.com";
// data
$msg = $_POST['name'] . $_POST['email'] . $_POST['organisation'] . $_POST['contactno'] . $_POST['message'];
// Headers
$headers = "MIME-Version: 1.0\r\n";
$headers.= "Content-type: text/html; charset=UTF-8\r\n";
$headers.= "From: <admin@tulisuites.com>";
mail($to, $subject, $msg, $headers);
?>
答案 0 :(得分:-1)
如果您通过ajax以正确的JSON格式将数据发送到服务器,则该数据应该已经在全局$_POST
变量中。您可以使用var_dump($_POST)
查看数据内容,以确保获得数据。如果其中包含您的数据,则无需从输入流中读取值,对其进行解码然后覆盖全局变量,则只需使用以下行:
$msg = $_POST['name'] . $_POST['email'] . $_POST['organisation'] . $_POST['contactno'] . $_POST['message'];
它应该可以工作。
此外,您可以对每个参数使用filter_input(INPUT_POST, "variable")
而不是$_POST["variable"]
来确保已设置并防止错误。