【问题标题】:JQuery .post - $_POST emptyJQuery .post - $_POST 为空
【发布时间】:2013-04-27 22:07:29
【问题描述】:

我知道最近出现了很多 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。

【问题讨论】:

    标签: php jquery ajax arrays post


    【解决方案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。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      你的罐子应该是这样的:

      $.post('/ajax/ExportReportPDF.ajax.php', {data: postData}, ...
      

      【讨论】:

      • 正如我所写,我已经尝试过没有字符串化,但它并没有真正改变结果。
      【解决方案4】:

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

      var postData = [];
      
      postData.push({
         type: 'grid',
         data: gridData
      });
      

      【讨论】:

        猜你喜欢
        • 2010-12-11
        • 1970-01-01
        • 2015-01-08
        • 1970-01-01
        • 2016-10-07
        • 1970-01-01
        • 2018-05-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多