我在页面上遇到自动填充问题。设置很复杂: 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);
}
}
});
}
帮助?提前谢谢你:)