Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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
从ajax接收数据到php不需要';行不通_Php_Jquery_Ajax - Fatal编程技术网

从ajax接收数据到php不需要';行不通

从ajax接收数据到php不需要';行不通,php,jquery,ajax,Php,Jquery,Ajax,为什么我不能将表单中的数据发送到phps脚本 我的js文件: var newMessage = { 'name': nameInput.val(), 'email': emailInput.val(), 'message': msgInput.val() } $.ajax({ type: 'POST',

为什么我不能将表单中的数据发送到phps脚本

我的js文件:

var newMessage = {
                'name':    nameInput.val(),
                'email':   emailInput.val(),
                'message': msgInput.val()
            }
            $.ajax({
                type: 'POST',
                url: 'contact.php',
                data: JSON.stringify(newMessage)
            }).done(function(res){
                console.log(res);
            }).fail(function(err){
                //console.log(err);
            });
和我的php文件:

<?php
    $data = $_POST['data'];
    json_decode($data);
    $name = json_decode($_POST['name']);
    echo ($name);

不要在javascript中的对象上使用
JSON.stringify
。JQuery将为您处理数据的转换。只需将对象传递给数据键,如下所示:

var newMessage = {
            'name':    nameInput.val(),
            'email':   emailInput.val(),
            'message': msgInput.val()
        }
        $.ajax({
            type: 'POST',
            url: 'contact.php',
            data: newMessage
        }).done(function(res){
            console.log(res);
        }).fail(function(err){
            //console.log(err);
        });

按照您的方式,您正在以json格式发送原始有效负载数据,而预期的格式类似于查询字符串。JQuery将为您将其转换为正确的格式。或者,如果您真的想发送这样的原始json数据(这里没有好处),那么您可以使用类似于
$rawData=file\u get\u contents('php://input');
读取原始输入数据,然后可以
json\u解码($rawData)

第二行试试这个
$data=json\u decode($\u POST['data'])$name=$data->name不幸的是,ajax响应是空的,无法通过执行
var\u dump($\u POST)之类的操作进行调试变量转储给我
数组(1){[“{”名称“:“vgfgfd”,“email”:”gdfdgf@dsasd“,”message“:“dasdsa”}”]=>string(0)“}
我建议您使用xdebug,将其在第一行中打断并检查变量。