在 django 中需要有关 ajax 和 jquery 搜索表单的帮助

Posted

技术标签:

【中文标题】在 django 中需要有关 ajax 和 jquery 搜索表单的帮助【英文标题】:Need help on ajax and jquery search form in django 【发布时间】:2011-07-02 13:44:08 【问题描述】:

我使用 ajax 和 jquery 编写了一个搜索表单,这里我尝试提交一个包含用户、start_date 和 end_date 的表单。

这里用户 = q 开始日期=q1 end_date =q2

搜索代码:

    % extends 'newbase.html' %

% block extra_js %
<script type="text/javascript">
$( document ).ready( function() 
  $( '#searchSubmit' ).click( function() 
    q = $( '#q' ).val();
    $( '#search_results').html( '&nbsp;' ).load( '/myapp/results_search/?q=' + q +'&q1='+ q1 +'&q2='+q2 );
  );
);

$( document ).ajaxStart( function() 
  $( '#spinner' ).show();
).ajaxStop( function() 
  $( '#spinner' ).hide();
);
</script>
% endblock %

% block content %
<center>

<div>

   <input id="q" type="text"/>
   <input id="q1" type="text"/>
   <input id="q2" type="text"/>

  <input id="searchSubmit" type="submit" value="Search"/>
  <br/>
  <span class="hint">Type in a  user &  Dates to search </span>
  <div class="margin">
    <span id="spinner"><img src="/media/img/spinner.gif"/></span>
    <div id="search_results"></div>
  </div>
</div>
</center>
% endblock %

在view.py中

def user_search(request):
  data = 
     
  return render_to_response('manager/attendance_search.html', data,
                               context_instance = RequestContext(request)) 


def results_search(request):
   if request.is_ajax():
      q = request.GET.get( 'q' )
      start=request.GET.get( 'q1')
      end=request.GET.get( 'q2' )
      if q is not None:            
        results = MyTable.objects.filter(at_user=q,at_date__gte=start,at_date__lte=end)
        data = 
                'results': results,
            
        return render_to_response( 'search_results.html', data, 
                                       context_instance = RequestContext(request))

我的问题是:

在给出日期和用户名之后 不返回任何结果? 如何在 ajax 中添加多个参数 像 ?q=q & q1=q1 & q2=q2 in jquery 函数? 如何从 request.GET.get 中获取值并传递给 ORM ?

如果我只通过编辑此行进行用户搜索,它会给出输出

以下更改有效

  $( '#search_results').html( '&nbsp;' ).load( '/myapp/results_search/?q=' + q );

在 view.py 中

 def results_search(request):
       if request.is_ajax():
          q = request.GET.get( 'q' )

          if q is not None:            
            results = MyTable.objects.filter(at_user=q)
            data = 
                    'results': results,
                
            return render_to_response( 'search_results.html', data, 
                                           context_instance = RequestContext(request))

但是这里的单一搜索是有效的,如果我添加了多个参数它就不起作用。

我在 request.GET.get 中做错了什么

请在这方面需要帮助

【问题讨论】:

【参考方案1】:

我自己修复了它,我忘了在脚本中添加下面的行,这个值是空的。现在我得到了搜索结果

q1 = $('#q1').val(); q2 = $('#q2').val();

【讨论】:

以上是关于在 django 中需要有关 ajax 和 jquery 搜索表单的帮助的主要内容,如果未能解决你的问题,请参考以下文章

Django 的 Ajax 视图

对 Django ajax 请求中的 JSON 数据和普通数据感到困惑

Django >= 3.1 和 is_ajax

Django - 带有休息框架的数据表ajax错误

Django身份验证和Ajax - 需要登录的URL

如何使 JQuery-AJAX 请求同步