Javascript JQuery从XML自动完成(动态结果)
也许我不理解这个概念(我是AJAX/javascript/Web新手)。我使用的是JQuery自动完成功能,如果我指定了一个小的、有限项的平面文件(suggestions.xml),那么这个函数可以正常工作,但是当我使用一个实际的生产数据文件(3MB)的建议时,这个脚本根本不起作用 因此,我创建了一个web服务,该服务根据文本框中的字符生成XML,但似乎JQuery并不是在每个按键上运行,而是仅在页面首次加载时运行。显然,要使此函数发挥任何作用,它需要在用户键入输入字段时动态获取结果Javascript JQuery从XML自动完成(动态结果),javascript,jquery,xml,ajax,autocomplete,Javascript,Jquery,Xml,Ajax,Autocomplete,也许我不理解这个概念(我是AJAX/javascript/Web新手)。我使用的是JQuery自动完成功能,如果我指定了一个小的、有限项的平面文件(suggestions.xml),那么这个函数可以正常工作,但是当我使用一个实际的生产数据文件(3MB)的建议时,这个脚本根本不起作用 因此,我创建了一个web服务,该服务根据文本框中的字符生成XML,但似乎JQuery并不是在每个按键上运行,而是仅在页面首次加载时运行。显然,要使此函数发挥任何作用,它需要在用户键入输入字段时动态获取结果 $(doc
$(document).ready(function () {
var myArr = [];
$.ajax({
type: "GET",
// this line always sends the default text; not what the user is typing
url: "Suggestions.aspx?searchString=" + $("input#txtSearch").val(),
dataType: "xml",
success: parseXml,
complete: setupAC,
failure: function (data) {
alert("XML File could not be found");
}
});
function parseXml(xml) {
//find every query value
$(xml).find("result").each(function () {
myArr.push({ url: $(this).attr("url"), label: $(this).attr("name") + ' (' + $(this).attr("type").toLowerCase() + ')' });
});
}
function setupAC() {
$("input#txtSearch").autocomplete({
source: myArr,
minLength: 3,
select: function (event, ui) {
$("input#txtSearch").val(ui.item.label);
window.location.href = ui.item.url;
//alert(ui.item.url + " - " + ui.item.label);
}
});
}
}))
在服务器上,我希望看到一些与用户在搜索框中键入的字符相对应的请求,但我收到了一条消息:
2013-10-18 22:02:04,588 [11] DEBUG baileysoft.mp3cms.Site - QueryString params: [searchString]:'Search'
我的建议平面文件似乎太大了,JQuery无法处理,而且我的web服务脚本永远不会被调用,除非第一次加载页面
如果在用户键入时我无法返回数据库(通过我的web服务)获取建议,那么如何在用户在搜索框中键入时动态生成建议?好的,我已经解决了所有问题 在ASPNET方面;我创建了一个表单来接收和响应AJAX:
Response.ContentType = "application/json";
var term = Request.Form["term"];
var suggestions = GetSuggestions(term); // Database results
if (suggestions.Count < 1)
return;
var serializer = new JavaScriptSerializer();
Response.Write(serializer.Serialize(suggestions);
现在一切正常
希望这能帮助其他可能被困在为ASPNET解决JQuery问题的人
$("input#txtSearch").autocomplete({
minLength: 3,
source: function (request, response) {
$.ajax({
url: "Suggestions.aspx",
data: { term: $("input#txtSearch").val() },
dataType: "json",
type: "POST",
success: function (data) {
response($.map(data, function (obj) {
return {
label: obj.Name,
value: obj.Url
};
}));
}
});
},
select: function (event, ui) {
$("input#txtSearch").val(ui.item.label);
window.location.href = ui.item.value;
}
});