将python列表转换为javascript数组

时间:2011-06-27 19:05:12

标签: javascript jquery python django json

所以我正在尝试构建一个日期的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日期对象的数组。如何获取我的Django视图返回的json并将其转换为js数组?

我试图使用的jquery插件的文档在这里,如果它有帮助:http://multidatespickr.sourceforge.net/

我是JS的新手,并不知道出了什么问题。有任何想法吗?感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

这段代码错了:

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

$.ajax函数确实返回jqXHR个对象,而不是ajax调用结果。你需要的是为你的ajax调用添加成功回调(Browser JS就是回调)。

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

但我认为仅仅为了预先填写日期选择器而提出额外请求是错误的方法。也许,当您实际使用日期选择器生成视图时,您可以传递日期列表吗?