我正在尝试使用jquery将数据传递给php。我用javascript获取数据。
JQuery:
$.post("export.php", JSON.stringify(result)); //result is an array of object
当我在chrome上使用调试器时,我可以在表单数据中看到类似的内容: [{ “ID”: “foo” 的, “×”:0, “Y”:1, “Z”:8, “T”:3}]:
但是当我试图用php检索它时,它不起作用:
echo 'Before decode ';
$array=$_POST['data'];
echo 'After decode ';
echo $array;
它只是回应:解码之前解码后
我错过了什么? (我知道我应该解码数据以获取php中的数组,但我简化它以查看问题的来源)
答案 0 :(得分:2)
如果要发送已编码的JSON字符串并通过$_POST['data']
访问它,则需要将结果包装在具有键data
的对象中:
$.post("export.php", {data: JSON.stringify(result)});
然后在您的服务器中,您可以像这样解码它:
echo 'Before decode ';
$array = json_decode($_POST['data']);
echo 'After decode ';
print_r($array);
答案 1 :(得分:1)
尝试在data
变量中发布您的json,然后您将$_POST['data']
上的export.php
$.post("export.php", {data : result});
或者您可以使用file_get_contents()
$data = file_get_contents('php://input');
并解码它json_decode()
答案 2 :(得分:1)
通常,您甚至不必将数据转换为JSON:
$.post("export.php", { data: result });
或者,您必须从输入流中捕获JSON编码的主体,即:
$array = json_decode(file_get_contents('php://input'), true);
如果请求正文的内容类型未公布为application/x-www-form-urlencoded
,则通常会发生这种情况。
答案 3 :(得分:0)
当您发布原始JSON数据时,PHP不知道如何解码它,并且不会填充$_POST
。你必须自己解析它。未经测试,但试试这个:
print_r(
json_decode(
file_get_contents('php://input')
)
);
请注意,由于您要发布JSON,我强烈建议您使用$.ajax
,以便设置contentType: 'application/json'
。