2016-03-29 41 views
0

編輯:製作了一個代碼顯示問題:http://codebins.com/bin/4ldqoy2/3 TL; DR:拖拽一個或多個事件到日曆並單擊保存按鈕後,我想輸出格式正確的JSON,用過的。使用外部拖拽功能從FullCalendar獲取數據

在fullcalendar-2.6.1外部拖動(external-dragging.html中的http://fullcalendar.io/download/)演示中,我一直試圖訪問被拖入日曆的事件的數據。

我試圖使用建議:

$("#save").click(function() { 
var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents'); 
var eventsJson = JSON.stringify(eventsFromCalendar); 

然而,eventsJson輸出如下錯誤: 類型錯誤:循環對象值

我發現了一種方法,通過使用下面的代碼,而不是繞過錯誤:

seen = []; 

var eventsJson = JSON.stringify(eventsFromCalendar, function (key, val) { 
    if (val != null && typeof val == "object") { 
     if (seen.indexOf(val) >= 0) { 
      return; 
     } 
     seen.push(val); 
    } 
    return val; 
}); 

有了一個事件,這將輸出如下:

[{ 
    "title":"My Event 3", 
    "start":"2016-03-15", 
    "end":null, 
    "_id":"_fc5", 
    "className":[], 
    "allDay":true, 
    "_allDay":true, 
    "_start":"2016-03-15", 
    "_end":null, 
    "source":{"events":[null]} 
}] 

選擇兩個事件將輸出如下:

[{ 
     "title": "My Event 3", 
     "start": "2016-03-23", 
     "end": "2016-03-25", 
     "_id": "_fc7", 
     "className": [], 
     "allDay": true, 
     "_allDay": true, 
     "_start": "2016-03-23", 
     "_end": "2016-03-25", 
     "source": 
      { 
       "events": [null, { 
        "title": "My Event 4", 
        "start": "2016-03-23", 
        "end": "2016-03-25", 
        "_id": "_fc13", 
        "className": [], 
        "allDay": true, 
        "_allDay": true, 
        "_start": "2016-03-23", 
        "_end": "2016-03-25" 
       }] 
      } 
    }, null] 

3個事件做這將輸出如下:

[{ 
"title": "My Event 2", 
"start": "2016-03-27T00:00:00.000Z", 
"end": null, 
"_id": "_fc2", 
"className": [], 
"allDay": true, 
"_allDay": true, 
"_start": "2016-03-27T00:00:00.000Z", 
"_end": null, 
"source": { 
    "events": [null, 
     { 
      "title": "My Event 4", 
      "start": "2016-03-28T00:00:00.000Z", 
      "end": null, 
      "_id": "_fc7", 
      "className": [], 
      "allDay": true, 
      "_allDay": true, 
      "_start": "2016-03-28T00:00:00.000Z", 
      "_end": null 
     }, 
     { 
      "title": "My Event 5", 
      "start": "2016-04-04T00:00:00.000Z", 
      "end": null, 
      "_id": "_fc10", 
      "className": [], 
      "allDay": true, 
      "_allDay": true, 
      "_start": "2016-04-04T00:00:00.000Z", 
      "_end": null 
     }] 
} 
}, null, null] 

正如你所看到的,不順心的事時,它構造對象。我不確定源是什麼:{「events」:[null]}應該是,但它可能是錯誤的原因。我也不確定start和_start與end和_end之間有什麼區別。

希望你能幫上忙。 謝謝。

+0

你能準備說明類似的jsfiddle或codebin您的問題演示以下? – Blindsyde

+0

是的,你知道了。 http://codebins.com/bin/4ldqoy2/3 – Fayze

+0

我想你想發送該JSON到一個頁面,你保存它,不是嗎?爲什麼不創建自己的對象,並且在每次drop事件之後只存儲想要的值,而不是僅在單擊'#save'按鈕時才存儲? – Yuri

回答

0

使用上面的代碼,因爲我不喜歡js,所以在後端語言中使用它。

對我來說,我曾經在PHP

$object = json_decode($request->request->get('hoursArray')[0]); 
$myHours =[]; 
for($i=0;$i<count($object);$i++){ 
    if ($i==0){ 
     $myHours[$i]['title'] = $object[0]->title; 
     $myHours[$i]['date'] = $object[0]->start; 
    }else{ 
     $myHours[$i]['title'] = $object[0]->source->events[$i]->title; 
     $myHours[$i]['date'] = $object[0]->source->events[$i]->start; 
    } 
}