jquery $ .post和php $ _POST

时间:2014-07-02 06:58:48

标签: php jquery post

我正在尝试使用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中的数组,但我简化它以查看问题的来源)

4 个答案:

答案 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'