2014-09-20 40 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(); 
      };