session不是第一次存储值

时间:2016-09-02 05:37:04

标签: php ajax excel laravel

我无法在首次运行中打印数据,但可以在第二次运行中进行打印。我想在首次运行中打印数据。

我有3个文件 1.主文件发送ajax帖子,打印数据(main.php) 2.将发送的数据放入会话(put.php) 3.将数据打印到excel(print.php)

main.php

<?php
session_start();
echo '<p class="first">ABC</p>'; //DOM IS <p class="first">ABC</p>
?>
$(document).ready(function(){
   var value = $('.first').text();
     myfun();
    function myfun(){
        $.post("put.php", {"content":value},function(data){
            console.log(data);
        });
  }
  window.location.href ='print.php';
 });

put.php

<?php
    session_start();
    $_SESSION["content"] = $_POST["content"];

?>

print.php //这些文件打印成excel代码很简单

<?php 
session_start();
header("content-type:application/xls");
$table = '<table><tr><th>Name</th></tr>';
$table .='<tr><td>'.$_SESSION["content"].'</td></tr></table>';
echo $table;
header("content-Disposition: attachment; filename = new.xls");
?>

请提前帮助我。

1 个答案:

答案 0 :(得分:1)

为什么

当ajax没有完成时,

js不会停止exec, 所以你应该在ajax完成后重定向,以确保$_SESSION["content"]已设置

修复

更改

$(document).ready(function(){
   var value = $('.first').text();
     myfun(); //i was missing then 
    function myfun(){
        $.post("put.php", {"content":value},function(data){
            console.log(data);
        });
  }
  window.location.href ='print.php';
 });

$(document).ready(function(){
   var value = $('.first').text();
     myfun(); //i was missing then
    function myfun(){
        $.post("put.php", {"content":value},function(data){
            console.log(data);
            window.location.href ='print.php';
        });
  }
 });