jQuery UI自动完成不显示通过AJAX获取的结果

时间:2011-05-24 12:00:27

标签: asp.net ajax json jquery-ui jquery-ui-autocomplete

我正在尝试在我的Web应用程序中使用jQuery UI自动完成功能。我设置的是一个名为SearchPreload.aspx的页面。此页面检查要与另一个参数一起出现的值(术语)。页面验证传入的值,然后从数据库中提取一些数据并在页面上打印出一个javascript数组(例如:["item1","item2"])。代码:

protected void Page_Load(object sender, EventArgs e)
{
    string curVal;
    string type ="";
    if (Request.QueryString["term"] != null)
    {
        curVal = Request.QueryString["term"].ToString();
        curVal = curVal.ToLower();
        if (Request.QueryString["Type"] != null)
            type = Request.QueryString["Type"].ToString();
        SwitchType(type,curVal);
    }
}
public string PreLoadStrings(List<string> PreLoadValues, string curVal)
{
    StringBuilder sb = new StringBuilder();
    if (PreLoadValues.Any())
    {
        sb.Append("[\"");
        foreach (string str in PreLoadValues)
        {
            if (!string.IsNullOrEmpty(str))
            {
                if (str.ToLower().Contains(curVal))
                    sb.Append(str).Append("\",\"");
            }
        }
        sb.Append("\"];");
        Response.Write(sb.ToString());
        return sb.ToString();
    }
}

如果我通过浏览器导航到数据库部分工作正常并在页面屏幕上打印出正确的数据。

jQuery ui autocomplete的编写如下:

$(".searchBox").autocomplete({
    source: "SearchPreload.aspx?Type=rbChoice",
    minLength: 1
});

现在,如果我的理解是正确的,那么每次我在搜索框中输入时,它都应该充当按键并触发我的源来限制数据的正确性?当我通过SearchPreload.aspx代码中的调试语句时,看起来该页面根本没有被点击。

如果我将自动完成功能包装在.keypress函数中,那么我进入搜索预加载页面但仍然没有得到任何结果。我只想在搜索框下显示结果,就像the default functionality example on the jQuery website一样。我做错了什么?

2 个答案:

答案 0 :(得分:3)

如果服务器返回的JSON无效,

自动填充将不会显示建议。因此,请复制以下URL(或返回的JSON数据)并将其粘贴到JSONLint。看看你的JSON是否有效。

http://yourwebsite.com/path/to/Searchpreload.aspx?Type=rbChoice&term=Something

PS:我没有看到你正在调用PreLoadStrings函数。我希望这是正常的。

答案 1 :(得分:0)

要检查的几件事。

HTH。