所有, 我有以下代码,它基本上是一个在 DOM 加载时加载一些搜索词的函数:
window.myAutocompleteFunction = function(){
return ['Test Saying','sit amet consectetur adipiscing','elit Nulla et justo'];
};
这对于我的实时搜索和正确更新来说效果很好。不过,我正在尝试根据数据库中的一些信息填充这些值。我尝试更新我的代码以使用 .get 函数来填充我的返回值,并尝试使其看起来像这样:
window.myAutocompleteFunction = function(){
$.get('http://localhost/website/load_users.php', function(data) {
alert(data);
return [data];
});
};
它尝试加载用户,在我的警报中它与手动输入时相同,但由于某种原因,当我进行搜索时它不起作用。知道如何从我的文件中获得相同的结果并使搜索工作相同吗?
编辑:我的 load_users.php 文件中现在唯一的内容如下:
'Test Saying','sit amet consectetur adipiscing','elit Nulla et justo'
I'm going to try and populate that with database values but just trying to get this to work for now.
Another Edit: I also tried to make my code like the following just to see if it work work:
window.myAutocompleteFunction = function(){
jQuery.get('http://localhost/okyne/load_users.php', function(data) {
alert(data);
return ['Test Saying','sit amet consectetur adipiscing','elit Nulla et justo'];
});
};
这也不起作用,所以我不确定为什么它不起作用,到目前为止唯一对我有用的是我提供的第一个代码片段。
非常感谢您提供的任何帮助!
最佳答案
您的 $.get
无法返回这样的值,因为它异步运行,浏览器开始评估它,继续前进并以该 fn 结束。在它完成之前。 此外,特定的返回
将针对内部成功回调函数,而不是自动完成函数。您必须加载数据并在成功回调中创建该函数。
这是一个模型示例。 http://jsfiddle.net/Nf2UD/
注意,我使用 setTimeout 来确保 ajax 调用已完成,但您需要确保在页面初始化期间调用 randomFn,以确保它在您尝试使用自动完成之前已运行。您可以通过多种方式检查这一点 - 使用全局变量来跟踪状态,检查自动完成函数是否未定义,......事实上,这并不是异步方法的真正要点,但无论对您有用什么,我都会这样做。猜猜。
function() randomFn {
$.get('http://localhost/website/load_users.php', function(data) {
alert(data);
window.myAutocompleteFunction = function(){ return [data]; };
});
};
关于jquery - 在页面 onLoad 期间将用户加载到 jQuery 中以进行实时搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11424741/