ajax从localstorage向php发送数据

时间:2015-08-04 04:04:40

标签: javascript php jquery ajax html5

我尝试使用ajax将localstorage中的数据发送到php,但是我得到错误

undefined index data

代码生成一个存储在localstorage中的dataurl。当用户点击链接时,将调用pdfGen.php,我想在localstrage中使用数据。

chart.php
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

<script type="text/javascript">
   $(document).ready(function() {
        $('#download').click(function() {
             $.ajax({
                type: "POST",
                url: "pdfGen.php",
                data: {data:'hello'},
                success: function(data) {
                    alert("hi");
                }
              });
         });
   }); //END $(document).ready()
</script>

<script>
  //<![CDATA[
  (function() {
     window.onload = function(){
         html2canvas(document.getElementById('chart'), {
              "onrendered": function(canvas) {
                   var img = new Image();
                   img.onload = function() {
                       img.onload = null;
                       console.log(canvas.toDataURL("image/png"));
                       window.localStorage.setItem("imgURL", canvas.toDataURL("image/png"));
                   };
                   img.onerror = function() {
                       img.onerror = null;
                       if(window.console.log) {
                           window.console.log("Not loaded image from canvas.toDataURL");
                       } else {
                           //alert("Not loaded image from canvas.toDataURL");
                       }
                   };
                   img.src = canvas.toDataURL("image/png");
               }
            });
         };
     })();
//]]>
</script>    
<body>
   <a href="pdfGen.php" id="download" >Report</a> 
   ..more code to generate the chart
</body>

下载按钮调用pdfGen.php脚本,该脚本使用fpdf生成报告。

pdfGen.php

<?php
    echo $_POST['data']; //gives error
    /*$pdf = new FPDF();
    $pdf->AddPage();

    //over here I want to add the image from the chart.php page whose data url is now in the localstorage.
    ..more code to generate report
    $pdf->output();*/
 ?>

如何获取php脚本中的数据?我尝试进行ajax调用,但是我在pdfGen.php脚本中获得了未定义的索引。我收到了警报HI但无法获取服务器上的数据。 它似乎不起作用。

2 个答案:

答案 0 :(得分:3)

在你的ajax定义数据中这样:

$.ajax({
                type: "POST",
                url: "pdfGen.php",
                data: { data: 'hello' },
                success: function(data) {
                    alert("hi");
                }
        });

现在您可以通过$ _POST [&#34; data&#34;]检索它。似乎您需要阅读有关jquery ajax文档的更多信息,请在此处阅读friend http://api.jquery.com/jquery.ajax/

&#34;数据&#34; ajax中的元素是你的参数

  

要发送到服务器的数据。它被转换为查询字符串if   还不是一个字符串。它附加到GET请求的URL。看到   processData选项可防止此自动处理。 对象必须   是键/值对。如果value是一个数组,jQuery序列化多个   具有相同键的值基于传统设置的值   (如下所述)。

请参阅jquery ajax文档中的粗体文本。

修改

发现第二个错误,它是你的链接,你正在做ajax然后链接也因为href重定向到pdfGen.php,为了防止这种情况你可以制作href&#34;#&#34;,或者你可以使用preventdefault():

   $('#download').click(function(event) {
         event.preventDefault();
         $.ajax({
            type: "POST",
            url: "pdfGen.php",
            data: {data:'hello'},
            success: function(data) {
                alert("hi");
            }
          });
     });

第二次编辑

好像你需要重定向到pdfGen.php来获取报告,然后你可能不需要ajax,你应该做的就是把参数放到你的链接href。

<a href="pdfGen.php?data=hello" id="download" >Report</a>

通过$ _GET获取它[&#34;数据&#34;];在php。

答案 1 :(得分:1)

您的错误是因为您使用锚标记返回pdfGen.php。 Ajax请求将发送数据并在成功函数中接收响应。当您使用SELECT p.Product_ID, p.Product_Name, p.Product_Cost, Total_Cost = p.Product_Cost * (p.Quantity + ISNULL(s.Quantity, 0)), p.Product_Description, p.Quantity, s.Quantity, p.Quantity + ISNULL(s.Quantity, 0) AS [Total] FROM presentsupply p LEFT JOIN SendStockByVendor s ON p.Product_Name = s.Product_Name; 时,实际上回到pdfGen.php而没有$ _POST [&#39;数据&#39;]中的任何值。

Ajax Call如下:

<a href="pdfGen.php" id="download" >Report</a>

在pfdGen.php中,作为一个很好的编程习惯,你还应该检查是否设置了post变量。

var toSend = "data:"+jsVariableContainingYourText; (or simply "data:Hello";)
$.ajax({
          type: "POST",
          url: "pdfGen.php",
          data: toSend,
          success: function(data) 
          {
                  alert("hi");
          }
      });

还要确保ajax调用的url是正确的(在您的情况下,pdfGen.php应该与您的html文件位于同一文件夹中)