会话不是第一次存储值

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

我有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"); ?> 

请帮助我,提前致谢。

为什么

当ajax没有完成时,js不会停止exec,所以你应该在ajax完成后redirect,以确保$_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'; }); } });