sing django и jQuery
Я пытаюсь реализовать кнопку, которая с помощью метода post посылала бы идентификатор поля, которое нужно удалить из базы данных.
feed_list.html
<form id="get_feed_frm">
{% csrf_token %}
{% for news in new_feed %}
<ul class = {{news.pk}}>
<button id = {{news.pk}}> Remove</button>
<script>
$("#{{news.pk}}").click(function () {
$('ul').remove('.{{news.pk}}');
$.post('/?ajax', { csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val(), id: '{{news.pk}}'});
}) </script>
{{ news.question }}
<hr />
</ul>
{% endfor %}
</form>
Я могу достичь желаемого результата с помощью этого кода.Однако, когда я удаляю строку
$('ul').remove('.{{news.pk}}');
из моего скрипта, функция не работает, и я не могу объяснить, почему это так.Я был бы очень признателен за ваш вклад в это.
-r
РЕДАКТИРОВАТЬ:
Спасибо, Юджи, я выучил пару трюков, которые помогут мне лучшенапиши мой код.Однако у меня все еще остается та же проблема.
Я разместил код под моим представлением, так как я, должно быть, делал что-то в корне неверное с моим представлением или способом отправки сообщения:
def recent_feed_view(request):
print "Entering View"
new_feed = []
if 'id' in request.POST:
delete_id = request.POST['id'].strip()
print "____id____" #just for debugging purpuse
print delete_id
n = news.objects.get(pk=delete_id)
n.discarded = True
n.save()
new_feed = news.objects.filter(discarded = False)
variables = RequestContext(request, {'new_feed': new_feed})
if 'ajax' in request.POST:
print "______AJAX_______"
return render_to_response('feed_list.html', variables)
Каждый раз, когда язапустить сайт, URL-адрес правильно связывает выполнение с правильным видом, и я получаю следующее сообщение в командной строке:
[06/Mar/2011 16:59:38] "GET /?csrfmiddlewaretoken=e724dfb883965aaa0edfb6ef521a885c HTTP/1.1" 200 1017
EDIT
Yuji,(спасибо, что познакомил меня с Chrom Dev Tool! Я все еще новичок и многому научился благодаря вам!)
Я последовал вашему совету 2 вещи произошли со мной здесь:
запуск этого кодав инструменте разработчика Chrome:
$.ajax({
type: 'POST',
url: '/?ajax',
data: {
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val(),
id:44
}
});
сервер разработчиков получил сообщение: правильная запись была удалена из моего кода, и мне пришлось вручную обновить страницу, чтобы увидеть сделанные изменения
Entering View
____id____
44
[06/Mar/2011 18:20:27] "POST /?ajax HTTP/1.1" 200 1203
Включив вышеуказанный скрипт на моем сайте, я получу:
Entering View
____id____
45
[06/Mar/2011 18:29:18] "POST /?ajax HTTP/1.1" 200 968
Entering View
[06/Mar/2011 18:29:18] "GET /?csrfmiddlewaretoken=e724dfb883965aaa0edfb6ef521a885c HTTP/1.1" 200 968
По какой-то причине я получаю POST и GET;Я использовал этот скрипт:
<script type="text/javascript">
$(function() {
$(".remove-button").click(function() {
$.ajax({
type: 'POST',
url: '/?ajax',
data: {
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val(),
id:$(this).attr('id')
}
});
})
})
</script>