Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的PHP代码没有';无法接收JSON数据_Javascript_Php_Jquery_Json - Fatal编程技术网

Javascript 我的PHP代码没有';无法接收JSON数据

Javascript 我的PHP代码没有';无法接收JSON数据,javascript,php,jquery,json,Javascript,Php,Jquery,Json,我有一个html表单,它使用jquery脚本获取数据,然后推送到一个php文件,通过电子邮件发送给我 jQuery: 'use strict'; var isValidElement = function isValidElement(element) { return element.name && element.value; }; var isValidValue = function isValidValue(element) { return ![

我有一个html表单,它使用jquery脚本获取数据,然后推送到一个php文件,通过电子邮件发送给我

jQuery:

'use strict';
var isValidElement = function isValidElement(element) {
    return element.name && element.value;
};
var isValidValue = function isValidValue(element) {
    return ![
        'checkbox',
        'radio'
    ].includes(element.type) || element.checked;
};
var isCheckbox = function isCheckbox(element) {
    return element.type === 'checkbox';
};
var isMultiSelect = function isMultiSelect(element) {
    return element.options && element.multiple;
};
var getSelectValues = function getSelectValues(options) {
    return [].reduce.call(options, function (values, option) {
        return option.selected ? values.concat(option.value) : values;
    }, []);
};

var formToJSON = function formToJSON(elements) {
    return [].reduce.call(elements, function (data, element) {
        if (isValidElement(element) && isValidValue(element)) {
            if (isCheckbox(element)) {
                data[element.name] = (data[element.name] || []).concat(element.value);
            } else if (isMultiSelect(element)) {
                data[element.name] = getSelectValues(element);
            } else {
                data[element.name] = element.value;
            }
        }
        return data;
    }, {});
};
var handleFormSubmit = function handleFormSubmit(event) {
    event.preventDefault();
    var data = formToJSON(form.elements);
     var request;

    request = $.ajax({
        url: "/dev/afelipeor/php/email.php",
        type: "POST",
        data: JSON.stringify(data)
    });
    // Callback handler that will be called on success
    request.done(function (response, textStatus, jqXHR){
        // Log a message to the console
        console.log("Hooray, it worked!");
        console.log(JSON.stringify(data))
        $('.card').addClass('hide').after(emailSent);
    });

    // Callback handler that will be called on failure
    request.fail(function (jqXHR, textStatus, errorThrown){
        // Log the error to the console
        console.error(
            "The following error occurred: "+
            textStatus, errorThrown
        );

        });
    };
    var form = $('#contact-form')[0];

form.addEventListener('submit', handleFormSubmit);
而php:

<?php

$_POST = json_decode(file_get_contents('php://input'), true);
    $data = $_POST['data'];
    $to = "myemail@afelipeor.com";
    $subject = "Contact Form";
    $message = $data;

    mail($to,$subject,$message,"This is an automated email from the contact form", "From: system@afelipeor.com\r\n");
?>

jQuery代码运行正常,并输出预期的结果。但是,每次我收到电子邮件时,邮件部分都是空的

我查看了整个互联网和堆栈溢出,并尝试了我发现的一切,但我仍然无法修复它


任何帮助都将不胜感激。

数据似乎是一个对象,可能是
$message=var\u dump($data)可以吗?在您尝试分配php脚本之前,
数据
是什么样子的?
$\u POST
是一个保留的超全局变量。试图覆盖它是一个非常糟糕的主意,除非你确切知道自己在做什么。在任何情况下,您是否在输入上尝试了
var\u dump
?添加
var\u dump($\u POST,file\u get\u contents($)php://input'));并查看您得到了什么。如果您注释掉
/$\u POST=json\u decode(file\u get\u contents($),那么
print\r($\u POST)
会显示什么php://input",对),?@Devisioner和Ed,我尝试了你的建议,但结果相同。AbraCadaver,
print\r($\u POST)
没有做任何事情。我是php新手,所以可能是因为我做错了什么,
data
似乎是一个对象,可能是
$message=var\u dump($data)可以吗?在您尝试分配php脚本之前,
数据
是什么样子的?
$\u POST
是一个保留的超全局变量。试图覆盖它是一个非常糟糕的主意,除非你确切知道自己在做什么。在任何情况下,您是否在输入上尝试了
var\u dump
?添加
var\u dump($\u POST,file\u get\u contents($)php://input'));并查看您得到了什么。如果您注释掉
/$\u POST=json\u decode(file\u get\u contents($),那么
print\r($\u POST)
会显示什么php://input",对),?@Devisioner和Ed,我尝试了你的建议,但结果相同。AbraCadaver,
print\r($\u POST)
没有做任何事情。我是php新手,所以可能是因为我做错了什么