2012-02-14 50 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