无法将json数据从html发送到php

时间:2018-10-10 22:50:38

标签: javascript php jquery json

我无法使用jquery将JSON数据从HTML发送到PHP,并且始终在console.log上显示失败状态。请检查我的代码。

jsonObjects.domain = client_domain;
jsonObjects.pkg = client_package;
jsonObjects.company_name = client_company;
jsonObjects.company_email = client_email;
jsonObjects.personal_name = psn_name;
jsonObjects.personal_phone = psn_phone;
jsonObjects.personal_email = psn_email;

var JsonPush = new Array();
JsonPush.push(jsonObjects);

var JsonArray = JSON.stringify(JsonPush);

$.ajax({
    type: "POST",
    url: 'order.php',
    data: JsonArray,
    dataType: 'json',
})
.done(function (data) {
    console.log('done');
    console.log(data);
}).
fail(function (data) {
    console.log('fail');
    console.log(data);
});

Order.php文件

<?php 

$decoded = json_decode($_POST['data']);

var_dump($decoded);
?>

2 个答案:

答案 0 :(得分:0)

您不需要先进行字符串化,只需将其发布到带键对象中并通过像这样的键进行访问

 let postData = { object: jsonObjects };

    $.ajax({
        type: "POST",
        url: 'order.php',
        data: postData,
        dataType: 'json',
    })

然后使用php:

$jsonObjects = $_POST['object'];

注意:您不是通过对象本身的名称访问发布的变量,而是访问发布的对象内部的键

答案 1 :(得分:0)

您的AJAX调用中没有data参数。应该是:

data: { data: JsonArray },

但实际上根本不需要使用JSON。您可以给对象一个data:选项,它的属性将成为POST的参数。

data: jsonObjects,

然后在PHP中,您可以访问$_POST['domain']$_POST['pkg']等。