jquery ui autocomplete需要额外的功能

时间:2010-12-20 10:54:26

标签: asp.net jquery user-interface autocomplete jquery-autocomplete

我有这样的自动完成代码:

$("input#PickupSpot").autocomplete({
  source: function(request, response){
     $.ajax({
        url: "AjaxSearch.aspx",
        dataType: "jsonp",
        data: {
           a: "getspots",
           c: "updateSpotList",
           q: request.term
        },
        success: function(){
           alert("Success");
        },
        error: function (xhr, ajaxOptions, thrownError){
                alert(xhr.status);
                alert(thrownError);
        }

     });
  }

});

当我尝试获取数据时,Firebug显示错误:“updateSpotList未定义”。 我需要创建一个名为 updateSpotList 的函数来获取服务器的响应。并且永远不会调用成功警报。

为什么我需要这个功能?也许aspx中有定义的东西?它是:

string response = "";

 string callback = Request.QueryString["c"];
 string action = Request.QueryString["a"]; 
 string query = Request.QueryString["q"];

  //Ensure action parameter is set
  if(action != null && action.Equals("getspots")){
        //Ensure query parameter is set
        if (query != null && query.Length > 0){
            SpotListRequest request = new SpotListRequest
            {
                FreeText = query,
                Language = "sv-SE"
            };
            IEnumerable<Spot> spots = DataBridge.GetSpotList(null, null, query).OrderBy(i => i.FullName);

            JavaScriptSerializer js = new JavaScriptSerializer();

            string json = js.Serialize(spots.ToArray());

            //Ensure callback parameter is set
            if (callback != null && callback.Length > 0)
            {
                response = String.Format("{0}('{1}')", callback, json);
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您可以指定URL作为源参数,而不是数据参数。

http://jqueryui.com/demos/autocomplete/#option-source

该插件将向您的服务器发出请求,您应该返回一个如下所示的JSON数组:

[{label:“Name”},{label:“Name 2”}]

将您的JavaScript代码更改为:

$("input#PickupSpot").autocomplete({
  source: "AjaxSearch.aspx?a=getspots&c=updateSpotList"
});

autocomplete插件会将一个名为term的参数附加到源URL,并带有input元素的当前值,因此会请求:“AjaxSearch.aspx?a = getspots&amp; c = updateSpotList&amp; term = test “如果你在输入元素中写了测试。

在服务器上,您想将q更改为term。