从ajax接收数据到php不起作用

时间:2017-02-15 22:59:38

标签: php jquery ajax

为什么我无法将表单中的数据发送到phps cript?

我的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);

1 个答案:

答案 0 :(得分:2)

不要在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_get_contents('php://input');的内容来读取原始输入数据,然后json_decode($rawData);可以使用。