我有一个php会话数组和ajax请求,通过java脚本将捕获的数据添加到div。一切正常,除非我刷新页面数据消失,直到我添加下一个项目全部再次显示。我该如何解决这个问题?
文件1(test.php):
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
var myname = document.getElementById("firstname").value;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST", "test2.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("firstname="+myname);
}
</script>
</head>
<body>
<h1>Enter Your Name</h1>
<input id="firstname"> </input>
<button type="button" onclick="loadXMLDoc()"> Add Item </button>
<div id="myDiv"></div>
</body>
</html>
文件2(test2.php):
<?php
session_start();
$myitems = array();
if (!isset($_SESSION['item'])) $_SESSION['item']=$myitems;
if (isset($_POST['firstname']) && !empty($_POST['firstname'])) {
$data = $_POST['firstname'];
$_SESSION['item'][] = $data;
}
//echo '<pre>';
//print_r($_SESSION);
//echo '</pre>';
foreach ($_SESSION['item'] as $key=>$value){
echo "<h2>".$value."</h2>";
}
?>
答案 0 :(得分:0)
一切正常,除非我刷新页面数据消失,直到我添加下一个项目全部再次显示。
为什么你期待不同的行为?即使您的会话中已经拥有项目 - 您也不是在test.php中的任何位置输出,那么您希望如何在那里看到它们?
将代码添加到循环遍历会话中的项目的文件中,并在div中输出所需的HTML代码。
顺便说一句,这完全是多余的,
$myitems = array();
if (!isset($_SESSION['item'])) $_SESSION['item']=$myitems;
如果会话已启动,$ _SESSION已经是一个数组。如果在为它们赋值之前初始化“欠阵列”,PHP并不在意。所以,即使是完全空的会议,
$_SESSION['item'][] = $data;
没有$_SESSION['item']
的任何进一步初始化将在没有任何PHP投诉的情况下正常工作。
答案 1 :(得分:0)
修改页面test1.php ..当您刷新页面时,div元素的附加数据将丢失。这是预料之中的。
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc()
{
var xmlhttp;
var myname = document.getElementById("firstname").value;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST", "test2.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("firstname="+myname);
}
</script>
</head>
<body>
<h1>Enter Your Name</h1>
<input id="firstname"> </input>
<button type="button" onclick="loadXMLDoc()"> Add Item </button>
<div id="myDiv">
<?php
if(isset($_SESSION['item'])){
echo "<pre>";
print_r($_SESSION['item']);
echo "</pre>";
}
?>
</div>
</body>
</html>