我从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异步请求会在为其分配值之前加载变量。谁能给我解释一下它将如何工作?我找到了与此相关的其他答案,但无法理解。预先谢谢你
答案 0 :(得分:1)
您可以通过将数据保存在localStorage
或sessionStorage
中,然后在另一页中进行检索来做到这一点。例如:
sessionStorage.setItem(SOME_KEY, VALUE_YOU_WANT_TO_SAVE);
,在另一页面中,只需调用以下内容即可
: var data = sessionStorage.getItem("THE_SAME_KEY_USED_BEFORE");
现在,数据就是您要传递的数据。
希望有帮助!