2015-01-12 5 views
0

Я пытаюсь сделать это:Как передать динамический URL-адрес в запрос POST через jQuery?

<script> 
$(document).ready(function() { 
    $(".delete_button").click(function() { 
     var id = $(this).attr('id'); 
     $.ajax({ 
      type: "POST", 
      url: "/accounts/{{ request.user.username }}/profile_listview", 
      data: { entryname:id }, 
      success: function(response){ 
       alert(response.success); 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 

Но мне нужно найти решение, чтобы пройти в динамическом URL, поскольку переменные шаблона Django не будет работать в этом сценарии. Как я могу это сделать?

ответ

3

Если переменная, которую необходимо передать, всегда одинакова (например, request.user.username будет всегда одинаковой для одного пользователя), вы можете визуализировать объект javascript, содержащий все параметры, необходимые для создания вашего URL-адреса.

<script type="text/javascript"> 
    var __MYAPP_CONFIG__ = { 
     username: JSON.stringify({{ request.user.username }}) 
    }; 
</script> 

Затем в сценарии вы могли бы довести эту динамическую часть в путем доступа к my_app.username.

$.ajax({ 
    # ... 
    url: "/accounts/" + window.__MYAPP_CONFIG__.username + "/profile_listview", 
    # ... 
}); 

Что мне нравится в этом подходе является то, что (на мой взгляд) дает достаточно общую структуру для проектов, которые растут со временем. Для сайтов, которые достаточно большие, я в основном заканчиваю тем, что у меня один объект конфигурации со структурой вроде my_project.my_app1.options, my_project.my_app2.options и т. Д. Таким образом, все приложения, которые могут нуждаться в нем, имеют пространство имен, и у меня есть центральное место, где я знаю, чтобы найти свои параметры.

3

Может быть, вы могли бы использовать атрибут данных в HTML5, что-то вроде:

<a class="delete_button" ... data-url="{% url 'my_url_name' username=request.user.username %}">Delete</a> 

Таким образом, становится более сухой.

Затем в сценарии, можно использовать эти данные как URL для отправки сообщений:

$.ajax({ type: "POST", url: $(this).data('url'), data: { entryname:id }, success: function(response){ alert(response.success); } });

Смежные вопросы