也许我不理解这个概念(我是 AJAX/javascript/Web 新手)。我正在使用 JQuery 自动完成功能,如果我指定一个小的、有限项的平面文件 (suggestions.xml),该功能可以正常工作,但是当我使用建议的实际生产数据文件 (3 MB) 时,脚本不起作用一点也不。
所以我创建了一个 Web 服务,它根据文本框中的字符生成 XML,但看起来这个 JQuery 并没有在每个按键上运行,而只有在页面第一次加载时才运行。显然,要使这个函数发挥作用,它需要在用户输入输入字段时动态地获取结果。
$(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 服务)以获取建议,如何在用户在搜索框中键入时动态生成建议?