jquery - 如何等待从ajax加载的变量

时间:2014-09-20 15:54:11

标签: jquery ajax variables tags

我有一个像这样的jqyery函数:

    var tagList = [];
    var suggestedTags = [];
    var tags;

    $("#tags-add").keyup(function (e) {
        var regex = new RegExp("^[a-zA-Z0-9]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str) || e.keyCode == 8) {
            query = $("input.tags-input").val();
            var form_data = {
                query: query
            };
            $.ajax({
                type: "POST",
                url: base_url + "ajax/tags/get_tags",
                dataType: 'json',
                async: false,
                data: form_data,
                success: function (data) {
                    tagList = data;
                },
                complete: function () {
                }
            });
            alert("script is not working without this alert");
            loadTags();
            var tags = $('#tags-add').tags();
            $('#tags-add').tags().suggestions = suggestedTags;
            $('#tags-add').tags().restrictTo = suggestedTags;
            return false;
        }
    });

    var loadTags = function () {
        suggestedTags = [];
        $.each(tagList, function (index, item) {
            suggestedTags.push(item.tagName);
        });
    };

我在这里使用bootstrap标签:https://github.com/maxwells/bootstrap-tags 问题是,当我从此代码中删除警报时,整个自动完成功能将停止工作。我试图将加载标记放在任何地方 - 成功,完成回调。我在ajax选项中设置了async:false,但是,如果没有警报,脚本将无法运行。 怎么了?请帮忙。我花了10个小时甚至更长时间才知道如何让它运转起来。

1 个答案:

答案 0 :(得分:0)

您应该在成功或完成时加载代码 另一种方法是使用房屋...... 但这种方式更简单:)

complete: function () {
            //here you load the tags 
            loadTags();
           };