0

我对编程很陌生,但在谈到 JavaScript/jQuery 时,我大部分都是新手。我在这里的原因是因为即使我已经通过互联网搜索了自动完成搜索的解决方案/我尝试应用我发现的不同版本,但我无法找到真正有效的解决方案:)

这是我的一段代码:

var mydata
$(document).ready(function () 
{
    ConstructSuggestionArray();
    $("[id$='txtSearchProject']").keypress(function () 
    {
       $("[id$='txtSearchProject']").autocomplete
            ({
                source: mydata
            })
    })
});

function ConstructSuggestionArray()
{
    $.ajax
    ({
        url: 'ProjectManagement.aspx/ConstructSuggestionArray',
        type: "POST",
        data: {},
        async: false,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (response) 
        {
            if (response.d != null) 
            {
                mydata = jQuery.parseJSON(response.d);
                return true;
            }
            else 
            {
                return false; 
            }
        }
    });
}

另外,我构造数组的代码段:

public string ConstructSuggestionArray()
        {
            using (DataClassesDataContext context = new DataClassesDataContext())
            {
                List<Utils.ProjectsOfAUser> theProjects =  
                      ReturnProjectsAccordingToAllocation(context);
                string[] projectsNameArray = new string[theProjects.Count];
                int index = 0;

            foreach (Utils.ProjectsOfAUser oneProject in theProjects)
            {
                projectsNameArray[index] = oneProject.Name;
                index++;
            }

            string strJSON = string.Empty;
            JavaScriptSerializer objJSSerializer = new JavaScriptSerializer();
            strJSON = objJSSerializer.Serialize(projectsNameArray).ToString();

            return strJSON;
        }
    }
}

而且我还在我的项目和我的 asp.net 页面中添加了脚本。

我很困惑,如果你能帮助我解决这个问题,我将非常感激。

提一下:txtSearchProject - 是一个asp控件。

先感谢您。

4

2 回答 2

1

你用过 jquery 自动完成插件吗,它非常好用,也很容易实现,也请通过这个链接

http://jqueryui.com/demos/autocomplete/

于 2012-08-07T12:05:31.353 回答
0

jQuery AJAX 方法是异步的,自动完成绑定到 null 变量,因此没有选项。然后回调运行并填充变量,但为时已晚。

你在这里有两个选择。您可以在成功回调中添加以下内容:

$("[id$='txtSearchProject']").autocomplete( "options", "source", mydata);

一旦完成,它将设置下拉列表的源(如果您需要再次调用它,这有利于更新)。

您还可以将 ConstructSuggestionArray 的 url 作为源,小部件将处理调用页面(请参阅“远程数据源”的自动完成演示页面并查看源)。

于 2012-08-07T13:47:21.850 回答