Возврат нескольких переменных из функции django ajax - PullRequest
1 голос
/ 10 марта 2012

Я строю список задач Джанго.Флажки, чтобы пометить задачу как завершенную, имеют ajax:

//Checkbox toggles
$('input:checkbox').click(function() {
    if ($(this).attr('checked')) {
        $action = true;
    } else {
        $action = false;
    }

    $.ajax({
        type: "POST",
        url: "/gtd/action/" + this.id.split("_")[1] + "/" + $(this).val() + "/" + $action + "/",
        success: function(data) {
            //Update entire gtd side menu
        }
    })
});

В успешной части ajax мне нужно обновить несколько переменных в боковом меню (относящихся к количеству незавершенных задач).Представление django может вычислять переменные

def ajax_click(request, modelname, id, type, toggle):

    #Do some stuff to save the object

    action_count = actions = Action.objects.filter(complete=False, onhold=False).count()
    hold_count = Action.objects.filter(onhold=True, hold_criteria__isnull=False).count()

    return HttpResponse('')

Вопрос в том, как передать более одной переменной обратно функции ajax?В этом случае у меня есть action_count и hold_count.Как я могу вернуть эти переменные в функцию успеха?

1 Ответ

3 голосов
/ 10 марта 2012

Самое простое решение - вернуть JSON из представления.Что-то вроде следующего:

import json
data = json.dumps({
        'actions': action_count,
        'holds': hold_count,
    })
return HttpResponse(data, content_type='application/json')

Ваш клиентский код может затем извлечь нужную информацию;поскольку, судя по всему, вы используете jQuery, он может автоматически обрабатывать JSON, чтобы вы автоматически передавали его в функцию успеха, устанавливая dataType: "json" в объекте, передаваемом в вызов $.ajax().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...