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

4 回答 4

5

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

var postData = [];

postData.push({
   type: 'grid',
   data: gridData
});
于 2013-05-03T13:59:48.447 回答
0

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

此外,当您尝试 GET 时,如果您遇到任何错误,请检查控制台。

于 2013-05-03T13:55:08.767 回答
0

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

你的可能应该是这样的:

$.post('/ajax/ExportReportPDF.ajax.php', {data: postData}, ...
于 2013-05-03T13:56:28.480 回答
-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。

于 2013-05-03T13:36:12.117 回答