首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery .post - $_POST为空

JQuery .post - $_POST为空
EN

Stack Overflow用户
提问于 2013-05-03 21:24:16
回答 4查看 1.3K关注 0票数 4

我知道ajax调用和$_POST最近出现了很多,然而我找不到解决我当前问题的答案。

在我的Javascript中,我有一个二维数据数组:

代码语言:javascript
复制
var postData = new Array(new Array());
postData[0]['type'] = 'grid';
postData[0]['data'] = gridData;

然后,我尝试将此数组发送到PHP脚本:

代码语言:javascript
复制
function export_report_pdf(postData){
   console.log(postData);

   $.post('/ajax/ExportReportPDF.ajax.php',{data:  JSON.stringify(postData)}, 
   function(postData){
        console.log("Successfully requested report export.");
   });

}

我尝试在我的PHP脚本中接收数组: var_dump(json_decode(file_get_contents("php://input")));( print_r($_POST);

但是我在$_POST中得到的只是一个空的二维数组。当我在函数开始处执行console.log(postData)时,数据就在那里。

我还检查了$_REQUEST并尝试删除JSON.stringify。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-03 21:59:48

你的内部变量类型应该是对象而不是数组,否则它不会被正确序列化:

代码语言:javascript
复制
var postData = [];

postData.push({
   type: 'grid',
   data: gridData
});
票数 5
EN

Stack Overflow用户

发布于 2013-05-03 21:55:09

您是否尝试过使用get而不是post。尝试一下,这至少可以确保数据从客户端传递到服务器,并且问题只出现在POST请求上。

同样,当你尝试GET时,如果你得到任何错误,请检查控制台。

票数 0
EN

Stack Overflow用户

发布于 2013-05-03 21:56:28

不要JSON.stringify你的帖子数据。jQuery会为你做这件事,不管你是否自己做过,所以它是双编码的。如果检查日志,您将看到,在对数据进行解编码之后,PHP有一个POST参数,该参数是所有数据的JSON编码。

您的可能应该如下所示:

代码语言:javascript
复制
$.post('/ajax/ExportReportPDF.ajax.php', {data: postData}, ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16360008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档