Jquery 在尝试通过AJAX进行Django查询时,我在哪里犯了错误?

Jquery 在尝试通过AJAX进行Django查询时,我在哪里犯了错误?,jquery,python,ajax,django,Jquery,Python,Ajax,Django,我有一个页面,基本上是一个店面的项目出售。我在导航栏中有一些过滤器来过滤产品。当我单击一个过滤器时,我试图通过ajax加载与该过滤器相关的产品(而不刷新页面) 我一直在遵循一个教程,但我不能让它工作。当前,当我单击过滤器时,我实际上会在flickr页面上看到产品,但相同的产品会留在页面上。我知道我在查询本身中没有犯错误,因为我尝试过不同的查询,如按日期重新排序、按名称排序等 不管怎样,下面是我的代码,如果有帮助的话,这是我试图遵循的教程 我在chrome开发控制台中也遇到了这个错误: GET h

我有一个页面,基本上是一个店面的项目出售。我在导航栏中有一些过滤器来过滤产品。当我单击一个过滤器时,我试图通过ajax加载与该过滤器相关的产品(而不刷新页面)

我一直在遵循一个教程,但我不能让它工作。当前,当我单击过滤器时,我实际上会在flickr页面上看到产品,但相同的产品会留在页面上。我知道我在查询本身中没有犯错误,因为我尝试过不同的查询,如按日期重新排序、按名称排序等

不管怎样,下面是我的代码,如果有帮助的话,这是我试图遵循的教程

我在chrome开发控制台中也遇到了这个错误:

GET http://127.0.0.1:8000/storefront/?xhr=true&filter=recent 500 (INTERNAL SERVER ERROR
VIEWS.PY

def storefront(request):
    latest_entries = Entry.objects.order_by('-pub_date')[:16]
    context = {'latest_entries': latest_entries}

    if request.is_ajax():
        if request.GET.get('filter') == 'recent':
            new_list = []
            latest_entries = Entry.objects.filter(entrytype=3)
            new_list.append(render_to_string('storefrontload.html', {'latest_entries': latest_entries}))
            json =  simplejson.dumps(new_list, cls=DjangoJSONEncoder)
            return HttpResponse(json, mimetype='application/json')
    return render(request, 'storefront.html', context)
url.PY

urlpatterns = patterns('',
    url(r"^$", home),
    url(r"^storefront/", storefront))
STOREFRONT.HTML

<a href="" id=most_recent>Show Recent</a>

{% include "storefrontload.html" %}

<script>
function filter(type) {
$.getJSON("/storefront/", {xhr: "true", filter: type},
  function(data) {
    $('.container').children().remove();
    $(data).appendTo('.container');
  });
}

$("#most_recent").click(function () { 
  filter("recent");
  $('#most_recent').attr('style', 'font-weight: bold').css('color', '#000'); 
});
return false;
</script>

{%include“storefrontload.html”%}
函数过滤器(类型){
$.getJSON(“/storefront/”,{xhr:“true”,过滤器:type},
功能(数据){
$('.container').children().remove();
$(数据).appendTo('.container');
});
}
$(“#最近”)。单击(函数(){
过滤器(“最近”);
$('most#u recent').attr('style','font-weight:bold').css('color','000');
});
返回false;
STOREFRONTLOAD.HTML

<div class="bodydiv">
    <div class="container">
    {% for i in latest_entries %}
      <div class="grid_4">
        <div class="imgcontainer">
          <img src="{{ i.item_picture.url }}" alt="" />
          <div class="overlayname">{{ i.headline }}</div>
          <div class="overlayprice">{{ i.price1 }}</div>
          </div>
        <div class="textcontainer">
        <p>{{ i.body_text }}</p>
      </div>
      <div class="sellerdiv">
        <div class="sellerpic"><a href="/accounts/{{ i.author }}"><img src="{{ i.author.get_profile.get_mugshot_url }}"></a></div> 
        <div class="sellerinfo">Sold by <b>{{ i.author }}</b></div>
        <div class="hearts"><img src="/static/img/stars.png"></div>
        <div class="reviewnum"></div>
        <div class="posteddate">Posted {{ i.pub_date|timesince|upto:',' }} ago</div>
      </div>
    </div>
    {% endfor %}

{i在最新的_条目中的百分比%}
{{i.headline}}
{{i.price1}}
{{i.body_text}

由{i.author}出售 发布日期{i.pub| time since | upto:','}} {%endfor%}
您还没有停止触发链接的默认操作:您的JS可以工作并更新页面,但浏览器会跟随链接,然后您会返回到原来的状态。确保从
函数的末尾单击
返回false
,或者让它接受
事件
参数并执行
事件.preventDefault()

我是否只在函数的末尾添加return false?在
$(“#most_recent').attr…
行之后,我对jqueryYes有点动摇。谢谢,这就解决了这个问题。