2012-03-09 66 views
0

不知道這是否可行。但是我試圖讓用戶點擊保存或刪除錨時,它不會在任何地方重定向。我想我問的是,隱藏的輸入是否可以將錨點識別爲輸入並將其發送到視圖?是否可以通過隱藏輸入「保存」/「刪除」錨點

例如: 模板: * 更新!

<a class="delete" href="javascript:void(0)">delete</a> 

Django的觀點:(我開始)

@login_required 
def edit_box(request): 
    if 'edit' in request.POST: 
     deletes = [int(item) for item in request.POST.getlist('delete')] 
     yadda yadda delete code 
     ... 
    return render_to_response('cart/boxcart.html', context, context_instance=RequestContext(request)) 

Django的觀點: * 更新!

@login_required 
def edit_box(request): 
    profile = get_object_or_404(Profile, user=request.user) 
    item_in_profile = Item.objects.filter(profile=profile) 
    deletes = [int(item_in_profile) for item_in_profile in request.POST.getlist('delete')] 
    item_in_profile.filter(id__in=deletes).delete() 
    item_in_profile.save() 
    return render_to_response('cart/boxcart.html', context, context_instance=RequestContext(request)) 

AJAX嘗試:

$(".delete").click(
     function(){ 
      $.ajax({ 
       type: "GET", 
      url: "/profile/delete/{{ item???}}/", 
      dataType: "json", 
      success: function(data){ 
      $("{{ item }}").fadeOut(300, function() { $("{{ item }}").remove() });      
      } 
     }); 
}); 

還是我這一切錯了嗎?

+0

如果你想刪除某些東西而不重新加載頁面,你應該使用AJAX。嘗試搜索例子,有很多。 – 2012-03-09 17:36:33

回答

1

當然!你甚至不需要使用隱藏的輸入。

可以確保一個錨標記不會去任何地方,通過增加

href="javascript:void(0)"

Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?

此外,你需要做一些輕的JavaScript工作。

這將包括:

1)添加一個onclick事件到錨

2)當錨被點擊獲取相關item.id

3)得到你想要的動作執行即。保存或刪除

4)使用item.id和操作向您的django應用程序發出ajax請求。

5)做出迴應!

這允許用戶在不依賴頁面刷新的情況下執行操作。 Ajax是一個至關重要的概念,並且非常值得學習。 http://www.w3schools.com/ajax/default.asp

小心通過帶有csrf中間件的ajax發佈數據。它會變得棘手。 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

+0

這太棒了。謝謝。我不知道阿賈克斯,但我肯定會玩它。 – Modelesq 2012-03-09 18:46:26

相關問題