Ajax自动填充问题

时间:2014-11-18 09:01:06

标签: jquery .net jquery-ui ajaxcontroltoolkit

我在页面上遇到自动填充问题。设置很复杂: FrameworkMasterPage     ApplicationMasterPage         MyContentPage

最初,FrameworkMasterPage保存了asp:UpdatePanel中的所有内容,但我尝试删除它只是为了检查,即使没有updatepanel它也不起作用。

我使用以下签名调用PageMethod:

<System.Web.Services.WebMethod()> _
    Public Shared Function GetPrimatelj(prefixText As String, count As Integer) As    String()
     Dim tl As New List(Of String)
     tl.Add("one")
     tl.Add("two")
     tl.Add("onu") ' so I can check that "on" return two selections

     Return tl.ToArray
End Function

该方法成功执行,但结果是整页渲染而不是方法结果。我得到自动完成下拉列表,但它包含一个在另一个下面 d Ø C Ť ÿ p 等等......整页翻译。

我试过直接调用PageMethod代理......结果相同。我已经尝试了AjaxToolkit AutoCompleteExtender(因此,上面的签名)和jQuery Ajax调用

结果相同。是的,之前我做过自动完成,但有一次:)。

这是(基础,由于缓存处理有更多代码,但这是关键部分)我的ajax调用

$.ajax({
                            url: "AjaxController.aspx/GetPrimatelj",
                            data: "{ 'term': '" + request.term + "' }",
                            dataType: "json",
                            type: "POST",
                            contentType: "application/json; charset=utf-8",
                            dataFilter: function (data) { return data; },
                            success: function (data) {
                                oldterm = request.term;
                                cache[request.term] = data.d;
                                response($.map(data.d, function (item) {
                                    return {
                                        value: item
                                    }
                                }))
                            },
                            error: function (result, status, error) {
                                console.log(status + " - " + error);
                            }
                        });

编辑:根据要求提供完整的功能代码。重复一遍,代码可以调用相关方法。只是该方法没有返回JSON(或者字符串),而是整个页面

 function SearchText() {
            console.log("search");
            var cache = {};
            var oldterm;
            console.log("#<%=txtSearch.ClientID%>");

            $("#<%=txtSearch.ClientID%>").autocomplete({
                source: function (request, response) {
                    console.log("ac");
                    if (request.term.indexOf(oldterm) >= 0) {
                        if (typeof (oldterm) != 'undefined') {
                            var data = jQuery.grep(cache[oldterm],
                        function (ele) {
                            return (ele.indexOf(request.term) >= 0);
                        });
                            response($.map(data, function (item) {
                                return { value: item }
                            }))
                            return;
                        }
                    } else {
                        cache = {};
                        console.log("else")

                        $.ajax({
                            url: "AjaxController.aspx/GetPrimatelj",
                            data: "{ 'term': '" + request.term + "' }",
                            dataType: "jsonp",
                            type: "POST",
                            contentType: "application/json; charset=utf-8",
                            dataFilter: function (data) { return data; },
                            success: function (data) {
                                oldterm = request.term;
                                cache[request.term] = data.d;
                                response($.map(data.d, function (item) {
                                    return {
                                        value: item
                                    }
                                }))
                            },
                            error: function (result, status, error) {
                                console.log(status + " - " + error);
                            }
                        });
                    }
                },
                minLength: 3,
                select: function (event, ui) {
                    if (ui.item) {
                        console.log(ui.item.label);
                        console.log(ui.item.value);
                    }
                }
            });
        }

帮助?提前谢谢你:)

0 个答案:

没有答案