2

I created AJAX auto-complete from a JSON file

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

and I want to pass "data-name" attribute clicked li tag value to div in another page.

That is :

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

and the div is <div class="Fname"></div>.

The variable finalName is global but it shows undefined outside this click event.

I am not an expert but I think that is due to AJAX Asynchronous request which loads variable before it is assigned value. Can anyone please explain to me how it will work? I found other answers that were related to this but couldn't understand them. Thank you in advance

2

1 Answer 1

1

You can do this by saving you data in localStorage o sessionStorage and then retrieve it in the other page. For example:

sessionStorage.setItem(SOME_KEY, VALUE_YOU_WANT_TO_SAVE);

and in the other page just retrieve it by calling:

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

Now, data is has the data you were trying to pass.

I hope this help!

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.