Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery$.post和php$\u post_Php_Jquery_Post - Fatal编程技术网

jquery$.post和php$\u post

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

我试图用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=$_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']
访问它,则需要将结果封装在一个带有key
data
的对象中:

$.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 it
json\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有很多方法可以实现你想要的。您在问题中所做的是发布原始数据。如果您确实想要处理原始数据,请参阅我的答案了解如何处理。