jQuery自动完成和getJSON

时间:2011-05-06 13:12:08

标签: jquery asp.net ajax json

我想与jquery GetJson合作使用jquery autocomplete插件 在我的客户端页面中,我有以下代码:

<script>
          $(document).ready(function () {
              var test;
              $.getJSON("getData.aspx", function (json) {
                  alert("function dome");
test=json;
              });
              $("input#autocomplete").autocomplete({
                  source: test
              });
          });

      </script>

和我的getData.aspx Page_Load方法包含以下内容:

protected void Page_Load(object sender, EventArgs e)
        {
            List<string> test = new List<string>() { "Java", "Javascript", "sss", "sqre" };
            StringBuilder sb = new StringBuilder();
            JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
            jsSerializer.Serialize(test, sb);
            Response.Clear();
            Response.ContentType = "application/json";
            Response.Write(test.ToString());

        }

为什么不执行警报(“功能完成”)?为什么我的自动完成功能不起作用?有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

尝试更改它以执行此操作:

 $(document).ready(function () {
      $.getJSON("getData.aspx", null, function (json) {
          alert("function dome");
          $("input#autocomplete").autocomplete({
              source: json
          });
      });              
  });

答案 1 :(得分:0)

您不能以这种方式使用AJAX,因为您无法知道请求何时返回。您需要在回调中执行操作:

$.getJSON("getData.aspx", {}, function (json) {
  $("input#autocomplete").autocomplete({ source: json });
});

此外,您可以直接使用远程数据源,而无需致电$.getJson

$("input#autocomplete").autocomplete({ source: 'getData.aspx' });

这种方法的缺点是,只要需要获取更新的数据集,它就会产生异步。如果你有一小组固定的数据,第一种方法会更好,如果你有一个需要过滤结果的大型数据集,第二种方法会更好。