JQuery .post - $_POST为空

4

我知道ajax调用和$_POST最近很常见,但是我找不到解决我当前问题的答案。

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

var postData = new Array(new Array());
postData[0]['type'] = 'grid';
postData[0]['data'] = gridData;

我试图将这个数组发送到一个PHP脚本:

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脚本中获取数组:

print_r($_POST);
var_dump(json_decode(file_get_contents("php://input")));

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

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

4个回答

5

您的内部变量类型应该是一个对象而不是数组,否则它将无法被正确序列化:

var postData = [];

postData.push({
   type: 'grid',
   data: gridData
});

0
不要对您的帖子数据进行JSON.stringify。无论您是否已经这样做,jQuery都会为您执行此操作,因此它最终会被双重编码。如果您检查日志,您会发现,在解码数据后,PHP具有一个单个POST参数,其中包含所有数据,以JSON编码。
您的代码应该像这样:
$.post('/ajax/ExportReportPDF.ajax.php', {data: postData}, ...

正如我所写的,我已经尝试过不将其转换为字符串,但实际上并没有改变结果。 - t70

0

你试过用GET而不是POST吗?试试看,至少可以确保数据从客户端传输到服务器,并且问题只出在POST请求。

另外,当你尝试使用GET时,请在控制台中检查是否有任何错误。


-1
function export_report_pdf(postData){
 console.log(postData);

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

}

试一下这个。 并确保你已经包含了最新的jQuery。

$.ajax 也只是给我返回一个空数组。jQuery 版本是 1.9.1。 - t70

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接