记住跨多个页面的javascript变量

时间:2014-05-11 10:39:25

标签: javascript php html mysql

我有一个数据库和2个下拉菜单,使用javascript我从选定的下拉列表中获取值,然后将其发送到我的PHP,PHP然后从数据库中返回信息并将其显示在表格中,那里是两个表,因为有2个下降。这是我的javascript:

    function choice1()
    {    
     var x = document.getElementById("select1");
     a = x.options[x.selectedIndex].value;
     window.location.href = "index.php?a=" + a + "&b=" + b; 
    }

    function choice2()
    {    
     var y = document.getElementById("select2");
     b = (y.options[y.selectedIndex].value);
     window.location.href = "index.php?a=" + a + "&b=" + b; 
    }

在更改两个表之前,它会等待两个下降更改,我希望它做的是在更改表时立即更改表,但保持另一个表相同。我认为这意味着需要存储javascript变量a或b,以便在页面更改时可以调用它,以便PHP为第二个表提供相同的信息。

2 个答案:

答案 0 :(得分:1)

您可以通过多种方式保留数据:

例如:

cookies:Javascript getCookie functionshttps://developer.mozilla.org/en-US/docs/Web/API/document.cookie

localStorage ,获取变量,隐藏输入。

我建议在这种情况下使用localStorage(html5),因为它非常安全且易于使用。

//    getter function of 'persistent' variables.
function getPersistent(myVar) {
    //    ensure the localStorage object exists.
    //    return the variable we are looking for if it does or: undefined.
    return (window.localStorage)? localStorage.getItem(myVar) : undefined;
}

//    setter function of 'persistent' variables.
function setPersistent(myVar, value) {
    //    ensure the localStorage object exists.
    if (window.localStorage) {
        //    set the variable.
        localStorage.setItem(myVar, value);
    }
}

//    first run (page refresh) returns undefined.
//    second run returns 4.
console.log(getPersistent('test'));

//    we set the localStorage var 'test' to '4'.
//    note that localStorage only saves strings.
//    so you need to parse/convert the data if you want to modify.
console.log(setPersistent('test', '4'));

//    returns localStorage var 'test' ==> 4.
console.log(getPersistent('test'));

小提琴:http://jsfiddle.net/kychan/2WJX4/

答案 1 :(得分:0)

跨页面持久保存值的最简单方法是使用会话存储API。它与本地存储非常相似,但在当前窗口/会话关闭时会被拆除。

当然,您可以随时选择通过AJAX更新您的页面,而不是整个重新加载文档,