2016-03-29 14 views
0

EDIT:問題を示すCodebinを作成:http://codebins.com/bin/4ldqoy2/3 TL:DR:1つ以上のイベントをカレンダーにドラッグして保存ボタンをクリックした後、正しくフォーマットされたJSONを実際に出力する中古。外部ドラッグを使用してFullCalendarからデータを取得

fullcalendar-2.6.1外部ドラッグのデモ(external-dragging.htmlのhttp://fullcalendar.io/download/)では、カレンダーにドラッグされているイベントのデータにアクセスしようとしていました。

Iが提案を使用してみました:

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

しかし、eventsJson、次のエラーを出力: TypeError例外:環状オブジェクト値

は私の代わりに、次のコードを使用してエラーを回避する方法を発見しました。

:1つのイベント、この意志の出力以下で

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; 
}); 

3つのイベントでそれをやって

[{ 
     "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] 

は、出力を次のようになる:

[{ 
"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] 

あなたが見ることができるように、それはオブジェクトを作成するとき、何かがうまくいかない2つのイベントが出力を次のようになる選択

[{ 
    "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]} 
}] 

。 {"events":[null]}のソースが何であるかはわかりませんが、エラーの原因になっている可能性があります。私はまた、開始と_startとendと_endの違いが何であるかもわかりません。

希望すると助かります。おかげさまで

+0

に次のように使用? – Blindsyde

+0

ええ、あなたはそれを持っています。 http://codebins.com/bin/4ldqoy2/3 – Fayze

+0

JSONを保存するページにJSONを送信したいと思いますか?あなた自身のオブジェクトを作成せず、各 'drop'イベントの後に必要な値だけを保存するのは、'#save'ボタンをクリックしたときだけ保存するのですか? – Yuri

答えて

0

上記のコードを使用してください.jsが嫌いなので、バックエンド言語が何であれ、それを使って作業してください。私にとって

私はあなたがjsfiddleまたはcodebinのようなもので、あなたの問題を示すデモを準備することができます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; 
    } 
} 
関連する問題