2012-02-14 120 views
1

我是一個業餘程序員,所以去我的容易。我試圖只調用一次getJson來拉取數組,然後讓jquery自動完成使用它作爲源。看起來這個代碼永遠不會調用處理程序。getJSON如何設置數據到數組?

<script> 

$(function() { 
     var availableTags[]; 
     $.getJSON("./Handler.ashx", function(data) { 
      availableTags = data; 
     }); 

     $("#TextBox3").autocomplete({ 
      source: availableTags 
     }); 
    }); 
</script> 

下面的代碼工作,但我不想讓js每次調用處理函數。

<script>   
$(function() { 
     $("#TextBox3").autocomplete({ 
      source: "./Handler.ashx", 
      minLength: 3, 
      select: function (event, ui) { 
       $(this).val(ui.item.value); 
      } 
     }); 
    }); 

</script> 

回答

2

嘗試是這樣的:

<script> 

$(function() { 
     $.getJSON("./Handler.ashx", function(data) { 
      $("#TextBox3").autocomplete({ 
       source: data 
      }); 
     });   
    }); 
</script> 
+0

剛編輯我的答案,包括了,也許你複製/粘貼... – broesch 2012-02-14 02:04:35

+0

感謝所有,我意識到我的問題是我的經理人「」我之前編寫過它,使用自動完成傳遞的查詢字符串並忘記註釋掉。這導致了一個異常錯誤。此代碼發佈效果很好。 – Conq 2012-02-14 02:10:09

0

的AJAX調用是異步的,所以你想到達之前使用的數據。使用數據的回調函數內:

$(function() { 
    $.getJSON("./Handler.ashx", function(data) { 
    $("#TextBox3").autocomplete({ 
     source: data 
    }); 
    }); 
}); 
+0

URL中的'.'實際上是否有效? – Craig 2012-02-14 01:39:56

+0

@克雷格:是的,單個時期意味着「當前目錄」。 – Guffa 2012-02-14 01:47:46

+0

謝謝,我完全沒有意識到一個'''從客戶端工作,但我知道'../'這樣做,這是一個愚蠢的假設我:)哦,這麼多的細節,我讓這個逃脫。 – Craig 2012-02-14 01:51:31