没有WebService的自动完成?

时间:2014-01-22 07:52:05

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

我正在尝试使用带有逗号分隔的多个值的文本框的自动完成选项,但它会在警告框jquery中抛出“错误”。

<asp:Content ID="content1" runat="server" ContentPlaceHolderID="AdminHead">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        SearchText();
    });
    function SearchText() {
        $('#<%=txtauthor.ClientID%>').autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "Author/Add.aspx/GetAutoCompleteData",
                    data: "{'username':'" + extractLast(request.term) + "'}",
                    dataType: "json",
                    success: function (data) {
                        response(data.d);
                    },
                    error: function (result) {
                        alert("Error");
                    }
                });
            },
            focus: function () {
                return false;
            },
            select: function (event, ui) {
                var terms = split(this.value);
                terms.pop();
                terms.push(ui.item.value);
                terms.push("");
                this.value = terms.join(", ");
                return false;
            }
        });
        $('#<%=txtauthor.ClientID%>').bind("keydown", function (event) {
            if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active)
            {
                event.preventDefault();
            }
        })
        function split(val) {
            return val.split(/,\s*/);
        }
        function extractLast(term) {
            return split(term).pop();
        }
    }
</script>

和文本框

<asp:TextBox ID="txtauthor" Width="700px" runat="server"></asp:TextBox>

和C#获取列表

 [WebMethod]
public static List<AuthorDetail> GetAutoCompleteData(string username)
{
    AuthorCalls mcr = new AuthorCalls ();
    return mcr.GetAutoCompleteAuthorName(username);
}

我试图在方法上设置断点,但它也没有调用该方法。 我错过了什么?

1 个答案:

答案 0 :(得分:0)

根据您为AJAX调用提供的URL,它假定呈现特定脚本的位置与您尝试访问的页面位于相同的相对路径(即文件夹)中。换句话说,我们假设您的网页位于/applicationPath/search.aspx之下。然后它会假设您访问的URL位于/applicationPath/Author/Add.aspx下是否正确?

或者,您可以通过其本机DEV工具查询来自浏览器的网络流量,以查看错误是什么。 404状态意味着无法访问/找到URL(我怀疑可能是这种情况)。或者,500状态意味着代码中的某个异常,我认为这是不可能的,因为您甚至无法在代码中找到断点。