AJAX POST问题,变量为空,但在echo中显示

Ajax发布发送服务器接收的2个日期变量,但是由于某些原因,它们无法使用,因为它们为空。 gettype函数返回NULL,但在回显中它们正确显示。

在发送前检查js变量-它们正确无误,并且网络日志还显示正确的请求参数。这意味着我的ajax发布请求由于某种原因未正确收到?我发送的日期与Postman的发布参数完全相同,并且服务器返回了正确的文件。

文件export.php

<?php
$host       = "localhost";
$username   = "root";
$password   = "";
$dbname     = "test";
$dsn        = "mysql:host=$host;dbname=$dbname";
$options    = array(
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
              ); 
require '../PHPExcel-1.8/Classes/PHPExcel.php';
require '../PHPExcel-1.8/Classes/PHPExcel/Writer/Excel5.php';
$date1 = $_POST["start"];
$date2 = $_POST["end"];
//echo $date1;
 try  {
    $connection = new PDO($dsn,$username,$password,$options);
    $sql = sprintf("SELECT OrderDate,OrderPrice,Adress,Delivery FROM Orders WHERE OrderDate <='$date2' AND OrderDate >='$date1'");
    $statement = $connection->prepare($sql);
    $statement->execute();
  } catch(PDOException $error) {
      echo $sql . "<br>" . $error->getMessage();
  };
$objPHPExcel = new PHPExcel();
$row = 1;
$objPHPExcel->getactiveSheet()->setCellValue('A'.$row,'OrderDate')
                              ->setCellValue('B'.$row,'OrderPrice')
                              ->setCellValue('C'.$row,'Adress')
                              ->setCellValue('D'.$row,'Delivery');
$row++;
while ($rec = $statement->fetch(PDO::FETCH_ASSOC)) {
    $objPHPExcel->getactiveSheet()->setCellValue('A'.$row,$rec['OrderDate'])
                                  ->setCellValue('B'.$row,$rec['OrderPrice'])
                                  ->setCellValue('C'.$row,$rec['Adress'])
                                  ->setCellValue('D'.$row,$rec['Delivery']);
    $objPHPExcel->getactiveSheet()->getStyle('A'.$row)->getNumberFormat()->setformatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15);
    $row++;
};
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
  header("Content-type: " . $mimeType);
   header('Content-Disposition: attachment; filename="file.xlsx"');
   header("Content-Transfer-Encoding: binary");
   $objWriter->save('php://output');
?>

文件create.php

<html>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
   <div id="reportrange" style="background: #fff; cursor: pointer; padding: 5px 10px; border: 1px solid #ccc; width: fit-content">
    <i class="fa fa-calendar"></i>&nbsp;
    <span></span> <i class="fa fa-caret-down"></i>
</div>
<script type="text/javascript">
$(function() {
    var start = moment().subtract(29,'days');
    var end = moment();
    function cb(start,end) {
        $('#reportrange span').html(start.format('MMMM D,YYYY') + ' - ' + end.format('MMMM D,YYYY'));
    }
    $('#reportrange').daterangepicker({
        startDate: start,endDate: end,ranges: {
           'Today': [moment(),moment()],'Yesterday': [moment().subtract(1,'days'),moment().subtract(1,'days')],'Last 7 Days': [moment().subtract(6,'Last 30 Days': [moment().subtract(29,'This Month': [moment().startOf('month'),moment().endOf('month')],'Last Month': [moment().subtract(1,'month').startOf('month'),'month').endOf('month')]
        }
    },cb);
    cb(start,end);
});
</script>
<br>
<form id="form1" method="post" action="../public/export.php">
  <button type="submit">Export</button>
    <script>
     $("#form1").submit(function s() {
    let start = $('#reportrange').data('daterangepicker').startDate.format('YYYY-MM-DD');
    let end = $('#reportrange').data('daterangepicker').endDate.format('YYYY-MM-DD');
console.log(start,end);
    $.post({
  url: '../public/export.php',data: { start: start,end: end },success: function() {/* //another way for receive file
    fetch('http://localhost/1/public/export.php')
  .then(resp => resp.blob())
  .then(blob => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.style.display = 'none';
    a.href = url;
    a.download = $('#reportrange').data('daterangepicker').endDate.format('YYYY-MM-DD') + '.xlsx';
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(url);
  })
  .catch(() => alert('error'));*/
    },error: function(jqXHR,textStatus,errorThrown){
     alert(textStatus,errorThrown);
  }
});
});
    </script>
</form>
</html>
wangleaishang9 回答:AJAX POST问题,变量为空,但在echo中显示

请删除contentType

 $.post({
   url: '../public/export.php',data: { start: start,end: end },success: function() {
   }
  });
本文链接:https://www.f2er.com/3135949.html

大家都在问