【问题标题】:Django Haystack autocomplete jquery formattingDjango Haystack 自动完成 jquery 格式
【发布时间】:2017-06-24 12:31:41
【问题描述】:

我对数据的格式有点困惑,我尝试了文档,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,
});

效果很好。

需要明确的是,我知道来自 Haystack 的 results 是变量名,就像 x 一样。问题是,我似乎无法让它与 JQuery 一起使用。我在 SO 中查看了很多问题,但找不到解决方案。

寻找方向。

【问题讨论】:

    标签: jquery django autocomplete django-haystack


    【解决方案1】:

    经过几个小时检查调试器,确认数据已正确发送等。我设法找到了解决方案,而且非常简单。

    在将值返回给 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 从外观上返回一个字典,而不是一个简单的数组或列表。 Dict 具有键和值,因此我们需要获取值(在我的情况下)并将其放入数组中,以使其作为自动更正的正确输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多