【问题标题】:Django autocomplete - request.is_ajax() always returns falseDjango 自动完成 - request.is_ajax() 总是返回 false
【发布时间】:2017-07-20 08:29:38
【问题描述】:

Django 新手。尝试设置一个具有支持自动完成的文本框的页面。我参考了这个post 以获得指导。出于某种原因,request.is_ajax() 总是返回 false

主应用的 urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', home),
    url(r'^search_assist/', include('search_assist.urls')),
]

search_assist 应用的 urls.py

urlpatterns = [
    url(r'^$', views.search_assist, name='search_assist'),
]

views.py

def search_assist(request):
    if request.is_ajax():
        q = request.GET.get('term', '')
        states = State.objects.filter(state_name_full__icontains = q )[:20]
        results = []
        for state in states:
            state_json = {}
            state_json['id'] = state.id
            state_json['label'] = state.state_name_full
            state_json['value'] = state.state_name_full
            results.append(state_json)
        data = json.dumps(results)
    else:
        data = 'fail'
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)

HTML

{% extends "gif_alpha_test/header.html" %}
  <div class="ui-widget">
      <label for="sassist">Search Assist: </label>
      <input type="text" id="sassist">
  </div>

header.html 有以下 jQuery 函数。

<script>
$( document ).ready(function() {
    assist();
});
function assist(){
            $.ajaxSetup({
                headers: {'X-Requested-With': 'XMLHttpRequest'}

            $("#sassist").autocomplete({
                source: "/search_assist/",
                minLength: 2,
            });});
        }
</script>

我很少看到其他类似的帖子,但这些帖子的 cmets / 回复没有帮助。

关于为什么 request.is_ajax() 总是返回 false 的任何想法?感谢您的帮助。

【问题讨论】:

  • 您正在尝试访问source: "/search_assist/",但该网址没有该端点url(r'^$', views.search_assist, name='search_assist'),
  • 和你的追加 results.append(state_json) 应该在 foo 循环内..
  • 感谢 AKS。我的错。我没有分享主应用程序的 urls.py。更新了我的问题。有了这个,我希望端点很好? Sanca Kembang - 是的,这是正确的。更新了问题。谢谢!

标签: jquery django jquery-ui-autocomplete


【解决方案1】:

将此添加到您的 JS 调用之上

$.ajaxSetup({
    headers: {'X-Requested-With': 'XMLHttpRequest'}
});

【讨论】:

  • 感谢 itzmeontv。我尝试将 ajaxSetup sn-p 添加到我的 JQ 中,但它仍然不起作用。用编辑更新了问题。可能我没有正确添加它。请告诉我。
猜你喜欢
  • 2012-01-25
  • 2014-08-13
  • 2012-11-13
  • 2019-07-20
  • 2019-08-29
  • 2014-09-06
  • 1970-01-01
  • 2017-09-25
  • 2013-10-22
相关资源
最近更新 更多