我有一个代码,我从一个页面到另一个页面,并在querystring中传递一个变量。我得到的变量在下一页,并显示相关的结果。但是当我刷新第二页时,它说我从第一页得到的变量是undefined
下面是链接
<a href="next.php?name=men-shoes">shoes</a>
next.php如下所示
$lcSearchVal=$_GET['name'];
<input type="checkbox" name="check" value="one">one<br>
<input type="checkbox" name="check" value="two">two<br>
<script>
$('input[type="checkbox"]').on('change', function(e){
var data = $('input[type="checkbox"]').serialize(),
loc = $('<a>', {href:window.location})[0];
$.post('/ajax-post-url/', data);
if(history.pushState){
history.pushState(null, null, loc.pathname+'?'+data);
}
});
</script>
我首先在第二页上得到lcSearchVal,但当我刷新页面时,我在浏览器中得到错误,名称未定义索引。
如何纠正这一点,以便当我刷新页面时,它应该处于相同的状态?也就是说,我选中的复选框应该保持选中状态,lcSearchVal应该以同样的方式读取
一个快速的解决方案是使用会话。所以你的代码会变成:
session_start();
if(isset($_SESSION['name']) && ! isset($_GET['name']))
{
$lcSearchVal = $_SESSION['name'];
}
else
{
$lcSearchVal = $_GET['name']; // do not forget to sanitize this data
$_SESSION['name'] = $lcSearchVal;
}
您需要在您推送的URL中包含$lcSearchVal
:
history.pushState(null, null, loc.pathname+'?name=<?php echo urlencode($lcSearchVal) ?>&'+data);