2011-06-27 232 views
1

所以我试图形成一个javascript数组日期,我可以作为输入提供给jQuery的datepicker插件。我的Django的看法是:将python列表转换为javascript数组

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

的这部分程序是错误的:

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

$.ajax功能不会返回jqXHR对象,而不是AJAX调用的结果。你需要的是添加成功回调(浏览器JS是关于回调)到你的ajax调用。

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

但我认为这是错误的做法,只是为了预填一些日期选择器。也许,当您实际使用日期选择器生成您的视图时,您可以传递日期列表?