2013-03-26 316 views
0

只是一個關於datepicker和json的快速問題。我有這樣的代碼:JSON和Datepicker上的亮點

var dates = {'2013/4/4':'some description' , '2012/6/6':'some other description'}; 

        function date_propogate() { 
        console.log('in function'); 
         $.getJSON('URL OF JSON', function(data) { 
         date_items = data.items; 
         console.log(date_items); 
          $.each(date_items, function(index, date_item) { 
           dates.push(date_item.sdate); 
          }); 
         }); 
        } 

        $(document).ready(function() { 

        date_propogate(); 

        $('#datepicker').datepicker({     
         beforeShowDay: function(date) { 

         var search = date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getDate()); 


         if (dates[search]) { 
           return [true, 'highlight', dates[search] || '']; 
           } 

           return [false, '', '']; 
          } 

         }); 
        }); 

的JSON頁面返回此:

{"items":[{"sdate":"2013-02-25","edate":"2013-02-27","cost":"200","id":"1"}]} 

我有兩個日期,這是靜態的,其顯示效果細膩,但是這是由返回的日期:date_items.sdate沒有加載,我收到一個錯誤,提示'沒有方法:推送'。

我是否正確地做了這個或有沒有更好的方法?正如我假設我不能只用PHP在頁面上做,因爲js加載之前的PHP權利?

任何幫助將非常感激。

回答

0

日期是一個對象,一個對象沒有一個叫做push的函數。數組確實有這些功能。

總之,只要做到這一點:

var dates = ['2013/4/4':'some description' , '2012/6/6':'some other description'];

2

你有dates聲明爲使用{}的對象,而不是使用[]數組。您不能在對象上調用.push()

0

日期不是數組,所以你不能推到它。您需要將日期定義爲數組

var dates = [{'2013/4/4':'some description'} , {'2012/6/6':'some other description'} ] 

上面的內容創建了一個對象數組。