2017-08-14 5 views
0

私はFullCalendar(http://fullcalendar.io)の最新バージョンで作業しています。 FullCalendarは、顧客の訪問時間をプロットするカレンダーを表示します。それはカレンダーのイベントを内部的に保存して、さまざまな月に早送りおよび早送りすることができます。私は戻って2017年2月に行くまで、私がJavaScriptコンソールに次のエラーメッセージを取得した時点で、上と上の前月、現在の月のために働いて、とされていますFullCalendarヌルの '_id'プロパティを読み取れません

Uncaught TypeError: Cannot read property '_id' of null 
    at buildEventFromInput (fullcalendar.js:13527) 
    at fullcalendar.js:12980 
    at Object.success (fullcalendar.js:13110) 
    at i (jquery-3.2.1.min.js:2) 
    at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2) 
    at A (jquery-3.2.1.min.js:4) 
    at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4) 

エラーが火に表示されますの前に日付情報を取得するAJAX関数ですが、その月のクエリを実行したことを確認するだけで、データは正常に表示されます。エラーが発生すると、すでに見た月の1つに戻ると、もうイベントが表示されません。このエラーメッセージは、JavaScriptがまだ動作しているにもかかわらず、何らかの形でその内部データストレージを汚染しているようです。そうでなければ、もはや月を切り替えることができません。

私はFullCalendarに精通している誰かがこのエラーを見て、正しい方向に向けることを期待しています。アプリケーションはログインによって保護されており、実際のクライアント情報が含まれているので、テスト目的のモックアップを構築するのはかなり複雑なので、1時間か2時間かかることはないと思っています。自分自身で弾を噛んでやるよ。

ありがとうございました!

EDIT:テストケースです。

http://scripturemenu.com/test/index.html

エラーメッセージは私が上に報告するものとは若干異なる(「hasTimeを」プロパティを読み取るようにしようとしている代わりに、未定義のプロパティ「_id」の) - 私は、実際のクライアント名を切り替えたときの状況「CLIENT NAME」という単語とIDが表示されますが、2月にヒットした場合でもIDは表示されます。

興味深いことに、このテストケースを動作させるためにコードを操作していたとき、2月を過ぎてもカレンダーに日付が表示されなくても、AJAX呼び出しが1月にトリガーされました。

+0

カレンダーの設定やサンプルデータを見ずに、問題の内容を伝えることは実際には不可能です。完全なモックアップは必要ないとは思いませんが、エラーの原因となるデータを確認すると便利です。特定の期間、ajax呼び出しを行うとエラーが発生した場合は、おそらく何かがあると思います入力データに欠落があります。おそらく、 "_id"のプロパティを持つnullオブジェクトです。 – ADyson

+0

そして、正確には「カレンダーのイベントを内部的に保存して、さまざまな月に前進したり早送りしたりすること」を意味しました。 fullCalendarにすべてのイベントデータを長時間前からロードしていますか?正面よりも多くのデータをロードする必要がある時点でエラーが発生していますか?またはその月にデータが事前にロードされている必要がありますか? – ADyson

+0

FullCalendarは、数か月分の情報を見てイベントデータを保存します。ソースコードを掘り下げていないので、最終的にそこに行く必要があるかもしれません。私はそれがグローバルJavaScript変数、データ属性、または何を使用するのかわかりません。あなたは月を変更するためにページをリロードしないので、別のAJAX往復なしで利用可能です – TulsaMJ

答えて

0

2月のデータにidのないオブジェクトがあります。あなたはここでそれを見ることができます: http://scripturemenu.com/test/calendar-events-json.html?TechID=all&show=customer&start=2017-01-29&end=2017-03-05&_=1502766053928

enter image description here

あなたのjsエラーの原因

+1

これでした!少なくとも、それは正しい軌道に乗った。問題は私のバックエンドスクリプトに巻き込まれていました。文字列を連結してJSONオブジェクトを作成していましたが、顧客名の中にアポストロフィ( "O'Rourke"など)がありました。いったん私がそれを解決すると、物事はうまくいった! – TulsaMJ

+0

私はどのバックエンド言語を使用しているのかわかりませんが、見つかったように予期しないエラーが発生する可能性が高い文字列を結合するJSONを作成するより良い方法があります。通常、言語のために存在するシリアライザツールのいくつかの並べ替えがあり、あなたのためのもののすべての種類の世話をします。例えばPHPの場合、 "json_encode()"メソッドがあります。あなたはそれを解決した方法ですか? – ADyson

0

することができることを、無効なイベントデータ存在の一枚があります。イベントのほとんどはと、正しく見えるとID、開始時刻と終了時刻、例えば:

{"id":43969,"start":"2017-02-07","title":"CLIENT NAME 43969"} 

しかし、これらのプロパティのいずれか持っていないものがあります:

{"title":"CLIENT NAME "} 

その結果、fullCalendarは知りませんがカレンダーに追加する方法、したがってクラッシュすることがあります。

2月に月のビューを変更する場合、このデータはあなたのソースデータ、および/またはfullCalendarのJSONにソースデータを変換するコードを修正する必要が

http://scripturemenu.com/test/calendar-events-json.html?TechID=all&show=customer&start=2017-01-29&end=2017-03-05&_=1502777909174 

にAJAX要求をトリガした、検索されましたフォーマット。

+0

あなたの答えはより詳細ですが、@ jperelliが最初に答えたので、私は彼の答えをチェックしました。両方のおかげであなたの助けになりました! – TulsaMJ

関連する問題