1

jQuery Weekcalendarを使用していますが、静的データの代わりに、データベースのデータを使用したいと考えています。以下のスクリプトはeventData1、カレンダーのすべての予定を含む変数を作成します。下から出力を手作業で貼り付けると、すべて正常に動作します。変数を介して追加すると、次のエラーメッセージが表示されてクラッシュします。

Uncaught TypeError: Cannot call method 'getTime' of undefined 

したがって、日付を新しいDateオブジェクトに変換することはできないと思います。そのため、文字列を日付に変換する別の関数を使用しようとしましたが、成功しませんでした。

events : [{'id': 25, 'start': new Date( '2013-01-07 14:45:00'), 'end': new Date('2013-01-07 15:45:00'), 'title': 'test appointment from javascript', userId: 0},{'id': 26, 'start': new Date( '2013-01-10 11:15:00'), 'end': new Date('2013-01-10 12:15:00'), 'title': 'test appointment from javascript', userId: 0},{'id': 22, 'start': new Date( '2013-01-09 12:45:00'), 'end': new Date('2013-01-09 14:45:00'), 'title': 'test appointment from javascript', userId: 0},{'id': 21, 'start': new Date( '2013-01-09 15:00:00'), 'end': new Date('2013-01-09 17:00:00'), 'title': 'test appointment from javascript', userId: 0},{'id': 20, 'start': new Date( '2013-01-08 16:00:00'), 'end': new Date('2013-01-08 17:00:00'), 'title': 'test appointment from javascript', userId: 0},{'id': 27, 'start': new Date( '2013-01-10 15:45:00'), 'end': new Date('2013-01-10 16:45:00'), 'title': 'test appointment from javascript', userId: 0}]

これは私のJavaScriptです:

  <script type="text/javascript">

      function dateReviver(value) {
        if (typeof value === 'string') {
          var re = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/
          var result = re.exec(value);
          if (result) {
              return new Date(Date.UTC(+result[1], +result[2] - 1, +result[3], +result[4],+result[5], +result[6]));
          }
        }
        return value;
      }

      var appointments = "[";
      var eventData1 = new Array();
      var counter = 0;

      $.ajax({
        url: 'http://www.slinder.ch/admin/php/termin_getappointments.php',
        dataType: 'json',
        async: false,
        success: function(data) {

            console.log('entered getJSON()');
            console.log(data);
            $.each(data, function(i, appointment) {
                var id = appointment.appointmentId;
                var start = appointment.start;
                var end = appointment.end;
                var title = appointment.prename;
                var userid = appointment.workerid;

                appointments += "{'id': " + id + ", 'start': new Date( '" + start + "'), 'end': new Date('" + end + "'), 'title': 'test appointment from javascript', userId: 0}";

                console.log(start);
                console.log(end);

                if (i === (data.length - 1)) {
                    // this is the last                    
                } else {
                    appointments += ",";
                }             
                counter++;
            });

            appointments += "]";
            console.log('first: ' + appointments);

            eventData1 = {
                options: {
                  timeslotsPerHour: 4,
                  timeslotHeight: 20,
                  defaultFreeBusy: {free: true}
                },
                events : appointments,

                freebusys: []
            };
        }
  });

  </script>

このような予定を使用するには、何を変更する必要があるかを誰かに教えてもらえますか?

events : appointments,

SOについても同様の質問がありますが、承認された回答はありません。

4

1 に答える 1

2

変数に文字列を作成していappointmentsます。したがって、配列として使用することはできません。代わりに、オブジェクトを使用して通常のJavaScript配列を作成します。

var appointments = [];
....
appointments.push({
    id: id,
    start: new Date(start),
    end: new Date(end), 
    title: 'test appointment from javascript', 
    userId: 0
});
...

編集:

または、実際に変更しているようには見えないため、サーバーから取得したデータをプッシュすることもできます。キーの名前を変更するだけの場合は、余分な労力を費やす価値はないでしょう。

于 2013-01-07T20:24:58.543 に答える