2017-01-25 3 views
0

Folgendes stammt von einer Fehler-Trap-Funktion in den JQUERY-Kalenderereignisquellen. Die Ausgabe wird nicht im Kalender angezeigt, auch wenn sie sich in einer einzeiligen Textdatei befindet. Ich habe verschiedene Datumsformate einschließlich UNIX-Zeitstempel ausprobiert. Das ist Kalender 3.1.0. Die gleichen Feeds funktionieren in V 1.5.4 korrekt.Der Kalender zeigt keine JSON-Feeds an.

Der Fehlerereignishandler wird ausgelöst, obwohl der Antwortstatus 200 lautet und der Antworttext vollständig ist. JQUERY AJAX GET außerhalb der Kalenderfunktion lädt die Daten korrekt. Ich kann die Daten auch per Skript abrufen und in ein Ereignis einfügen: [] Block und es wird im Kalender angezeigt. Die Daten werden auch korrekt angezeigt, wenn sie in einen Ereignisblock in der Funktion fullCalendar kopiert und eingefügt werden.

[ 
    "readyState: 4", 
    "getResponseHeader: function (a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b}", 

    "getAllResponseHeaders: function(){return k?g:null}", 

    "setRequestHeader: function (a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this}", 

    "overrideMimeType: function (a){return null==k&&(o.mimeType=a),this}", 
    "statusCode: function (a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this}", 

    "abort: function (a){var b=a||x;return e&&e.abort(b),A(0,b),this}", 
    "state: function(){return d}", 

    "always: function(){return f.done(arguments).fail(arguments),this}", 
    "catch: function (a){return e.then(null,a)}", 

    "pipe: function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+\"With\"](this,e?[a]:arguments)})}),a=null}).promise()}", 

    "then: function (b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError(\"Thenable self-resolution\");j=a&&(\"object\"==typeof a||\"function\"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()}", 
    "promise: function (a){return null!=a?r.extend(a,e):e}", 

    "progress: function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&\"string\"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this}", 

    "done: function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&\"string\"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this}", 

    "fail: function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&\"string\"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this}", 

    **"responseText: [{'id':1,'title':'test','start':'2014-12-25T10:00:00','end':'2014-12-25T18:00:00','description':null}]", 
    "status: 200", 
    "statusText: OK"** 
] 
+3

Der angegebene Code scheint minimiert zu sein und ist auch nicht korrekt formatiert. Sie erhalten mehr Unterstützung, wenn Sie eine lesbarere Quelle bereitstellen und korrekt formatieren. – Brian

+0

Es hilft, wenn Sie zum Beitrag hinzufügen: A. Ihre Kalenderkonfiguration und B. Ihre API oder was auch immer Sie aufrufen, die GET von. –

+0

Kalender-Konfiguration ist nur grundlegende Basis, keine weitere Konfiguration als die Get-Call in Ereignisquellen, die getan wurde, um die Fehlerbehandlung Funktion verwenden, wenn Ereignis: 'EventSource' hat nicht funktioniert. Die API ist nicht das Problem, wie es mit der vorherigen – BMZ

Antwort

0

In Ihrer Textformatierung ist etwas verschraubt.

Wenn Sie Ihre Beispieldaten einfügen

'end':‌​'2014-12-25T10:00:00‌​' 

in Notepad ++ und nutzen die "Encode in ANSI" Option, sieht es wie folgt aus:

'end':‌​'2014-12-25T10:00:00‌​' 

ich zum ersten Mal, weil dann bemerkt, wenn ich gerade war bewegend links/rechts mit dem Cursor entlang der Linie, musste ich 3 mal drücken, um von 0 bis 'zu erhalten, und die Spalten-ID stieg weiter an, während ich es tat.

Dann, wenn ich fullCalendar mit diesen Daten lief, die Konsole Fehler gemeldet war

Uncaught SyntaxError: Invalid or unexpected token

zeigt auf die Linie mit den Ereignissen auf sich, die auch ich einen seltsamen Charakter vermuten gemacht.

Wenn Sie diese zusätzlichen Zeichen entfernen und diese als Ereignisquelle verwenden, funktioniert fullCalendar einwandfrei.

Also ... die Lösung ist, zu reparieren, was auch immer die Daten falsch erzeugt.

+0

Der Code hier wurde von einem JS-Alarm-Popup kopiert, das den Fehler anzeigt. Die Datenzeile enthält keine zusätzlichen Zeichen, wenn sie tatsächlich an den Kalender gesendet wird. Es wird nicht angezeigt, auch wenn die Datenzeile das einzige Element in einer Textdatei ist, die in Edit Pad Pro gespeichert wurde.Es funktioniert jedoch, wenn die Zeile in die Seite selbst in einem Ereignis eingefügt wird: block, so dass die Codierung nicht das Problem ist, noch das Problem JQUERY die Daten zurückgeben kann, ist es JQUERY in den Kalender Get Call den Fehler zurückgeben Text, der eingefügt wurde. Danke für die Antwort. – BMZ

+0

Ok, dann schlage ich vor, dass Sie uns den Code zeigen, der den Kalender und die Datenquelle definiert. Der Fehler, den Sie in der ursprünglichen Frage gepostet haben, sagt uns wirklich nicht viel - es ist nur eine Ladung internen jQuery-Codes. Das einzige nützliche Bit ist der Antworttext, wo ich den Kodierungsfehler aufgeschnappt habe. Aber wenn Sie sicher sind, dass das nicht das Problem ist, und dass es funktioniert, wenn Sie die Ereignisse auf der Seite fest codieren, dann muss es etwas anderes sein, das mit dem Setup oder den Daten vom Server verbunden ist. Erstellen Sie einen MCVE http://stackoverflow.com/help/mcve, den wir verwenden können, der das Problem demonstriert. – ADyson

+0

@BMZ hast du das gelöst? – ADyson