【问题标题】:haystack autocomplete jquery ui not being able to make it workshaystack自动完成jquery ui无法使其工作
【发布时间】:2014-02-26 03:16:14
【问题描述】:

我正在尝试传递由我的自定义视图生成为列表的数据:

def autocomplete(request):
sqs = SearchQuerySet().autocomplete(content_auto=request.GET.get('q', ''))[$
suggestions = [result.name_esp for result in sqs]
return HttpResponse(suggestions)

但我不知道如何在脚本区域定义“建议”作为 jquery ui 的来源。我只能找到 jquery ui 使用已定义列表的示例,例如 here

【问题讨论】:

  • 您可以在我的回答中查看类似的 JSON 示例:stackoverflow.com/questions/19662956

标签: jquery django jquery-ui autocomplete django-haystack


【解决方案1】:

您链接到的 jQuery 页面有几个使用 Ajax 请求作为源的示例:单击右侧的“远程数据源”,然后单击底部的“查看源”以查看代码。看起来您需要做的就是在您的 autocomplete 函数中添加一个 source 元素,其值是返回数据的 URL。

除此之外,您还需要确保数据格式正确:这意味着将其序列化为 JSON:

return HttpResponse(json.dumps(suggestions))

【讨论】:

  • 非常感谢丹尼尔的回复,我一直在分析几个例子,我想我快到了。那么,在你的 jsn 返回之后,我应该使用 source: json.dumps(suggestions) 和 data: json 创建 ajax 请求吗??
  • 不,你混淆了去哪里。 source 是提供 Django 自动完成视图的 URL。 json.dumps 位进入该 Python 视图,代替您当前的 return 语句。
  • 嗯......所以,如果视图(在这种情况下为“自动完成”)被调用:url(r'^$',views.autocomplete,name='autocomplete'),我有包括:来源:127.0.0.1(如果我在本地运行应用程序)?
  • 是的(尽管该值需要用引号括起来)。或者你可以直接source: '/',因为当前页面大概在同一个服务器上,所以你只需要提供一个相对地址。
【解决方案2】:

您需要在后端为您发出请求,如下所示:

$(function() {
    var availableTags = [];

    $.get( "YOUR BACK-END HERE", function( data ) {
        availableTags  = data;
    });

    $( "#tags" ).autocomplete({
        source: availableTags
    });
});

我没有测试过这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    相关资源
    最近更新 更多