1

jQuery Week Calender、サーバー側として Asp.net Web API、バックエンドとして Sql サーバーを使用しています。

デモに従ってこれまでに行ったすべての作業ですが、デモには静的な JSON データが含まれています。ここでは、サーバーからデータを取得する必要があります。

他のほとんどすべてのことは明確で正常に動作していますが、サーバーからのイベントデータの読み込みとカレンダーへの受け渡しに問題があります。サーバーから得た応答は次のとおりです。

[{"id":13,"title":"Event Name","body":"Content","start":"2012-10-16T03:30:00.00","end":"2012-10-16T06:30:00.00","typeEvnt":1},{"id":14,"title":"dfgfdg","body":"gdfgdfg","start":"2012-10-15T04:15:00.00","end":"2012-10-15T06:45:00.00","typeEvnt":1}]

日時は GMT 形式で、ローカル タイム ゾーンに変換してからカレンダーに追加する必要がありました。

カレンダーに追加するために私がやっていることは次のとおりです。

$.ajax({
                url: '/api/api/event/load',
                type: 'get',
                statusCode: {
                    200: function (data) {
                        var dataString = JSON.stringify( data);   

                        callback( {events : dataString} );
});

しかし、クロムでUncaught TypeError: Cannot call method 'getTime' of undefinedというエラーが表示されました。これは日付変換に関連していると確信しています。

このエラーの後、カレンダーはイベントをロードしません。

ここにいくつかのポイントがありますが、それらは明確ではありません。

  1. サーバーがデータをブラウザに送信する DateTime 形式。
  2. ローカル タイム ゾーンに変換してカレンダーに渡す方法。
  3. Datetime を目的の形式にフォーマットするために使用される C#.net のサーバー側コード。

全体として、サーバーから DateTime データを取得し、それをローカル タイム ゾーンに変換してから jQuery Week Calender に追加するメソッドが必要です。

提案や手がかりが役立つか、MVC のデモになります。

4

1 に答える 1

1

$.ajaxまず、上記の呼び出しでいくつかの閉じ括弧が欠落しています。

...etcsuccess:よりも設定を使用する方が一般的であることにも注意してください。statusCode: { 200:

JQuery Week Calendar サイトのデモを見ると、各イベントの開始フィールドと終了フィールドに JavaScript の Date オブジェクトが必要です。JSON はこれらのフィールドを自動的に Date に変換しないため、これを行うには reviver 関数と呼ばれるものが必要です。textまた、JQuery の JSON パーサーではなく JSON パーサーを使用してテキストを解析できるように、テキストをフォーマットで戻すことも必要です。

以下のdateReviver関数は、ISO 8601 日付形式で日付を解析します。これは、あなたが探しているものだと思います。出典: 提供: Windows 8 JSON.parse を使用して JSON テキストを日付型に逆シリアル化する方法? :

function dateReviver(value) {
  if (typeof value === 'string') {
    var re = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)$/
    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;
}

そして、ajax 関数は JSON parse を呼び出します。JSON parse は、dateReviver 関数を使用して、そこにある日付文字列を変換します。

$.ajax({
  url: '/api/api/event/load',
  type: 'get',
  dataType: text,
  success: function(data) {
      var eventArray = JSON.parse(data, dateReviver);
      callback({events: eventArray});
  }
});
于 2012-10-15T22:31:56.880 に答える