将JS变量从一页传递到另一页

时间:2018-08-10 00:43:30

标签: javascript jquery html ajax

我从JSON文件创建了自动完成的AJAX

function run() {
    field.show();
    field.html('');
    let val = search.val();
    let input = new RegExp(val, "gi");

    $.get("js/pk.json").then(function(city) {
        if (val.trim().length === 0) {
            field.empty();
            field.hide();
        }
        $.each(city, function(key, value) {
            let n = new RegExp(val, 'gi');
            let name = value.city.replace(n, `<span class="me">${val}</span>`);
            if (value.city.search(input) != -1) {
                field.append(`<li class="list-search" data-name='${value.city}'><a href="pages/check.html" class="waves-effect">${name}  ${value.country}<br><br></a></li>`);
            }
        })
    })
});

我想将"data-name"属性单击的li标记值传递给另一页中的div。

那是:

$("#field").on("click", "li", function(e) {
    finalName=$(this).attr('data-name');
});

并且div为<div class="Fname"></div>

变量finalName是全局变量,但在此点击事件之外显示为未定义。

我不是专家,但是我认为这是由于AJAX异步请求会在为其分配值之前加载变量。谁能给我解释一下它将如何工作?我找到了与此相关的其他答案,但无法理解。预先谢谢你

1 个答案:

答案 0 :(得分:1)

您可以通过将数据保存在localStoragesessionStorage中,然后在另一页中进行检索来做到这一点。例如:

sessionStorage.setItem(SOME_KEY, VALUE_YOU_WANT_TO_SAVE);

,在另一页面中,只需调用以下内容即可

var data = sessionStorage.getItem("THE_SAME_KEY_USED_BEFORE");

现在,数据就是您要传递的数据。

希望有帮助!