2011-06-27 431 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 */ 
    } 
}); 

但我認爲這是錯誤的做法,只是爲了預填一些日期選擇器。也許,當您實際使用日期選擇器生成您的視圖時,您可以傳遞日期列表?