Преобразование списка Python в массив JavaScript - PullRequest
1 голос
/ 27 июня 2011

Итак, я пытаюсь сформировать массив дат javascript, который я могу использовать в качестве входных данных для дополнения jquery datepicker.Мое представление Django:

def autofill_featured(request):
    show_id = request.GET.get('show_id')
    show = Show.objects.get(id=show_id)
    data = [] 
    for listing in show.listings.all():
        string = str(listing.date.month) + '/' + str(listing.date.day) + '/' + str(listing.date.year)
        data.append(string)
    return HttpResponse(simplejson.dumps(data))

Мой javascript в настоящее время:

$(document).ready(function() {
    var preselect = function () {
        var results = $.ajax({
            url: "/autofill_featured",
            dataType: "json",
            data: {show_id: $("#id_show_id").val()}
        });
        return results;
    };
    $("#picker").multiDatesPicker({
        addDates: preselect()
    });

Если я вручную укажу

addDates: ['6/29/2011', '6/30/2011']

, тогда он работает, но пытается передать егорезультаты предварительного выбора и я получаю ошибку: «o_dates [0] .getTime не является функцией».В соответствии с документами multiDatesPicker я могу предоставить либо массив строк в формате даты, который я использовал выше, либо массив объектов даты javascript.Как я могу взять json, который возвращается моим представлением Django, и превратить его в массив js?

Документы для аддона jquery, который я пытаюсь использовать, приведены здесь, если это поможет: http://multidatespickr.sourceforge.net/

Я очень новичок в JS и не знаю, что происходит не так.Есть идеи?Спасибо за любую помощь, вы можете предоставить!

1 Ответ

1 голос
/ 28 июня 2011

Эта часть кода неверна:

var preselect = function () {
    var results = $.ajax({
        url: "/autofill_featured",
        dataType: "json",
        data: {show_id: $("#id_show_id").val()}
    });
    return results;
};
Функция

$.ajax возвращает объект jqXHR, а не результат вызова ajax. Вам нужно добавить успешный обратный вызов (Browser JS - это все обратные вызовы) к вашему вызову ajax.

$.ajax({
    /* ... */
    success: function (data) {
        /* Set date pickers date 
           I am  not sure about multiDatePicker API */
    }
});

Но я думаю, что неправильно делать дополнительный запрос просто для того, чтобы предварительно заполнить какой-то указатель даты. Может быть, вы можете передать список дат, когда вы фактически создаете свой вид с помощью средства выбора даты?

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