2013-10-23 25 views
1

我有這樣的AJAX功能,這是工作的罰款:發送動態AJAX URL在Django

function show_tasks() { 
       $.ajax({ 
         type: "GET", 
         url: "/2/todos/", //I want url: "/{{ category.id }}/todos/" 
         success: function(data){ 
          $('#tasks').html(data) 
          .css("display", "block");  
         } 
        }); 
     } 

HTML內容

{% for category in categories %} 
    <tr> 
    <td width="5%"><input type="checkbox" value="{{ category.id }}" name="category_name" id="category{{ forloop.counter }}" /></td> 
    <td> 
     <a data-toggle="tooltip" title="Show Tasks" onclick="show_tasks()"> 
      {{ category.name }}</a> 

{% endfor %} 

我怎樣才能做到這一點?在模板處理器HTML

回答

3

構建URL,這樣的:

... 
<a data-toggle="tooltip" title="Show Tasks" 
    onclick="show_tasks({% url 'category_todo' category.id %})"> 
... 

,並在你的JavaScript添加URL支持:

function show_tasks(url){... 
    url: url, 
    ... 
} 
+0

我向'show_tasks()'函數傳遞了'{{category_id}}'作爲參數,它工作正常。謝了哥們! – pynovice

+0

-1,這是非常糟糕的做法。如果你這樣做,你應該確定你在做什麼。 –

+0

@limelights是的,你可以在js中構造url,但是如果你的url patter稍後改變呢?說它會是/cat.id/todos/new/左右?在urls.py中保存所有內容當然更容易。 爲什麼這是不好的做法,將不勝感激,實際上不可能想象任何除了html大小。 – alko

2

您可以使用this獲得產生相應點擊的DOM元素事件在你的show_tasks函數中。從那裏,只需使用jQuery來查找相鄰複選框的值。

您可以像var category = $(this).closest('input').attr('value')那樣在show_tasks中獲取類別id並將其提供給$.ajax,如url : "/" + category + "/todos/"