Django Haystack 自动完成 jquery 格式化
Django Haystack autocomplete jquery formatting
我对数据的格式有点困惑,我尝试了文档,JQuery 和 Haystack 都没有运气。
我已经设置了自动完成,当我输入时:
autocomplete/?search=foo
结果是:
{"results": ["foo1", "foo2", "foo3", "foo4", "foo5"]}
当我尝试检索它并将其用作 JQuery 自动完成的来源时,如下所示:
$('#autocomplete').autocomplete({
source: function (request, response) {
$.getJSON("/autocomplete/?search=" + request.term, function (data) {
response(data);
});
}
});
没有显示结果。
如果我像这样创建一个变量:
x = ["foo1", "foo2", "foo3", "foo4", "foo5"];
然后这样称呼它:
$("#autocomplete").autocomplete({
source: x,
});
它工作得很好。
明确一点,我理解的results
来自Haystack是变量名,就像x
一样。问题是,我似乎无法让它与 JQuery 一起工作。我在 SO 中查看了很多问题,但找不到解决方案。
寻找方向。
经过几个小时的检查调试器、确认数据已正确发送等。我设法找到了解决方案,而且非常简单。
我必须先将值存储在一个数组中,然后再将其返回给 JQuery 自动完成功能。
基本上:
$('#autocomplete').autocomplete({
source: function (request, response) {
$.getJSON("/autocomplete/?search=" + request.term,
function (data) {
var array = new Array();
response($.map(data, function (value, key) {
array = value;
return array;
}));
});
},
minLength: 1,
});
我仍然不明白为什么,但我猜 Django returns 从外观上看是一本字典,而不是简单的数组或列表。 Dict 有键和值,所以我们需要获取值(在我的例子中)并将它放在一个数组中,以便它作为自动更正的正确输入。
我对数据的格式有点困惑,我尝试了文档,JQuery 和 Haystack 都没有运气。
我已经设置了自动完成,当我输入时:
autocomplete/?search=foo
结果是:
{"results": ["foo1", "foo2", "foo3", "foo4", "foo5"]}
当我尝试检索它并将其用作 JQuery 自动完成的来源时,如下所示:
$('#autocomplete').autocomplete({
source: function (request, response) {
$.getJSON("/autocomplete/?search=" + request.term, function (data) {
response(data);
});
}
});
没有显示结果。
如果我像这样创建一个变量:
x = ["foo1", "foo2", "foo3", "foo4", "foo5"];
然后这样称呼它:
$("#autocomplete").autocomplete({
source: x,
});
它工作得很好。
明确一点,我理解的results
来自Haystack是变量名,就像x
一样。问题是,我似乎无法让它与 JQuery 一起工作。我在 SO 中查看了很多问题,但找不到解决方案。
寻找方向。
经过几个小时的检查调试器、确认数据已正确发送等。我设法找到了解决方案,而且非常简单。
我必须先将值存储在一个数组中,然后再将其返回给 JQuery 自动完成功能。
基本上:
$('#autocomplete').autocomplete({
source: function (request, response) {
$.getJSON("/autocomplete/?search=" + request.term,
function (data) {
var array = new Array();
response($.map(data, function (value, key) {
array = value;
return array;
}));
});
},
minLength: 1,
});
我仍然不明白为什么,但我猜 Django returns 从外观上看是一本字典,而不是简单的数组或列表。 Dict 有键和值,所以我们需要获取值(在我的例子中)并将它放在一个数组中,以便它作为自动更正的正确输入。