jquery$.post和php$\u post
我试图用jquery将数据传递给php。我用javascript获取数据 JQuery:jquery$.post和php$\u post,php,jquery,post,Php,Jquery,Post,我试图用jquery将数据传递给php。我用javascript获取数据 JQuery: $.post("export.php", JSON.stringify(result)); //result is an array of object 当我在chrome上使用调试器时,我可以在表单数据中看到如下内容: [{“id”:“foo”,“x”:0,“y”:1,“z”:8,“t”:3}]: 但当我试图用php检索时,它不起作用: echo 'Before decode '; $array=$_P
$.post("export.php", JSON.stringify(result)); //result is an array of object
当我在chrome上使用调试器时,我可以在表单数据中看到如下内容:
[{“id”:“foo”,“x”:0,“y”:1,“z”:8,“t”:3}]:
但当我试图用php检索时,它不起作用:
echo 'Before decode ';
$array=$_POST['data'];
echo 'After decode ';
echo $array;
它只是在重复:在解码之前,在解码之后
我错过了什么?(我知道我应该解码数据以获取php中的数组,但我简化了它以查看问题的根源)如果您想发送一个编码的JSON字符串并通过
$\u POST['data']
访问它,您需要将结果包装在一个带有键data
的对象中:
$.post("export.php", {data: JSON.stringify(result)});
然后在您的服务器中,您可以这样解码:
echo 'Before decode ';
$array = json_decode($_POST['data']);
echo 'After decode ';
print_r($array);
如果要发送一个编码的JSON字符串并通过
$\u POST['data']
访问它,则需要将结果封装在一个带有keydata
的对象中:
$.post("export.php", {data: JSON.stringify(result)});
然后在您的服务器中,您可以这样解码:
echo 'Before decode ';
$array = json_decode($_POST['data']);
echo 'After decode ';
print_r($array);
尝试在
data
变量中发布json,然后您将在export.php上获得$\u post['data']
$.post("export.php", {data : result});
或者您可以使用file\u get\u contents()
解码它json\u decode()
尝试在data
变量中发布json,然后您将在export.php上获得$\u post['data']
$.post("export.php", {data : result});
或者您可以使用file\u get\u contents()
而decode itjson\u decode()
当您发布原始json数据时,PHP不知道如何对其进行解码,并且不会填充$\u post
。你必须自己解析它。未经测试,但请尝试以下方法:
print_r(
json_decode(
file_get_contents('php://input')
)
);
请注意,由于您正在发布JSON,我强烈建议您改用$.ajax
,这样您就可以在发布原始JSON数据时设置contentType:'application/JSON',PHP不知道如何解码它,也不会填充$\u post
。你必须自己解析它。未经测试,但请尝试以下方法:
print_r(
json_decode(
file_get_contents('php://input')
)
);
请注意,由于您发布的是JSON,我强烈建议您改用$.ajax
,这样您就可以设置contentType:'application/JSON'
,通常您甚至不必将数据转换为JSON:
$.post("export.php", { data: result });
或者,您必须从输入流中提取JSON编码的主体,即:
$array = json_decode(file_get_contents('php://input'), true);
如果请求正文的内容类型未公布为application/x-www-form-urlencoded
,则通常会发生这种情况。通常,您甚至不必将数据转换为JSON:
$.post("export.php", { data: result });
或者,您必须从输入流中提取JSON编码的主体,即:
$array = json_decode(file_get_contents('php://input'), true);
如果请求主体的内容类型没有作为application/x-www-form-urlencoded
发布,则通常会发生这种情况,如果您没有将其作为数据传递,请使用$.post(“export.php”,{data:JSON.stringify(result)});非常感谢,它现在可以工作了;非常感谢,它现在在PHP中运行.Noob,但我认为应该是$.post(“export.PHP”,{data:result})代码>不符合jQuery文档的要求@PratikJoshi看到了我对真正问题的答案。@koala_dev这是文档中的第一行:jQuery.post(url[,data][,success][,dataType])
@koala_dev使用最新编辑,您的答案现在完全不正确。在您最初的帖子中没有JSON编码的数据,但您稍后会对其进行解码…PHP中的Noob,但我认为应该是$.post(“export.PHP”,{data:result})代码>不符合jQuery文档的要求@PratikJoshi看到了我对真正问题的答案。@koala_dev这是文档中的第一行:jQuery.post(url[,data][,success][,dataType])
@koala_dev使用最新编辑,您的答案现在完全不正确。在您最初的帖子中没有JSON编码的数据,但您稍后将对其进行解码…是的,发现它也很奇怪,但它工作正常。我一开始没有注意到,但它们也像documentation@Richard有很多方法可以实现你想要的。您在问题中所做的是发布原始数据。如果你真的想处理原始数据,请参阅我的答案,了解如何处理。是的,我也觉得很奇怪,但它正在工作。我一开始没有注意到,但它们也像documentation@Richard有很多方法可以实现你想要的。您在问题中所做的是发布原始数据。如果您确实想要处理原始数据,请参阅我的答案了解如何处理。