在php中刷新时,从上一页的查询字符串中发送变量

时间:2014-05-23 10:40:29

标签: javascript php jquery

我有一个代码,我从一个页面转到另一个页面并在querystring中传递一个变量。 我在下一页中获取该变量并显示与之相关的结果。但是当我刷新第二页时,它说我从第一页获得的变量是未定义的。

以下是链接

<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。

2 个答案:

答案 0 :(得分:1)

一个快速的解决方案是利用会话。所以你的代码将成为:

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;
}

答案 1 :(得分:0)

您需要在推送的网址中加入$lcSearchVal

history.pushState(null, null, loc.pathname+'?name=<?php echo urlencode($lcSearchVal) ?>&'+data);