2014-09-20 37 views
0

加载我有一个jqyery功能是这样的:jQuery的 - 如何等待变量从阿贾克斯

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

我使用的引导标签从这里:https://github.com/maxwells/bootstrap-tags 问题是,当我从这个代码中删除警报,整个自动完成功能停止工作。我试图在任何地方放置加载标签 - 成功完成回调。我在ajax选项中放置了async:false,但仍然没有警报,脚本无法正常工作。 有什么不对?请帮忙。这花了我10个甚至更多的时间,我不知道如何让它工作。

+1

把从Ajax调用需要的数据到所有代码成功函数并移除async = false。或者获得一些已经过测试的代码:http://jqueryui.com/autocomplete/ – mplungjan 2014-09-20 15:58:33

+0

当那些代码成功时,任何错误信息? – worldask 2014-09-20 15:59:58

回答

0

您应该加载成功或完整 另一种方法是标签使用场所...... 但这种方式比较简单:)

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