7
votes

FullCalendar ne se liera pas au flux JSON à partir d'ASP.NET MVC3 Action

Je ne parviens pas à obtenir le FullCalendar JQuery Plugin à lier à un réseau JSON provenant d'un ASP.NET MVC3 Action.

J'ai supprimé presque tout, du code pour tenter de chasser le problème; Je suis laissé avec ceci, qui de chaque article de tous les jours que j'ai lu, devrait travailler: p>

action (contrôleur de calendrier) strong> p> xxx PRE>

VUE STROND> P>

   $(document).ready(function () {
       $('#calendar').fullCalendar({
           events: [{title: 'Event1',start: '2011-04-04'},
                    {title: 'Event2',start: '2011-04-05'}
                   ]});
   });  


1 commentaires

J'ai traversé et j'ai trouvé le problème - il y a une collision de nom de la fonction avec jquery.validate.js.


3 Réponses :


3
votes

J'ai traversé et j'ai trouvé le problème - il y a une collision de nom de la fonction entre FullCalendar.js et jquery.validate.js.


2 commentaires

Quelle fonction? Pourriez-vous fournir plus de détails s'il vous plaît.


Non, je ne me souviens pas; C'était il y a 30 mois. Si c'est critique, vous pouvez exécuter de vieilles versions? Mais le problème a été résolu par les versions ultérieures, alors quel est le problème?



1
votes

Peut-être au lieu de cela: xxx pré>

Essayez ceci: p> xxx pré>

ou au lieu de ceci: p>

events: '@Url.Action("Events", "Calendar")'


1 commentaires

Merci, mais le Json est en cours de retour correctement, il est donc nécessaire de modifier la façon dont Urlhelper construit l'URL ne fait pas de différence. Et mon paramètre de lignes est déjà un tableau. Le problème est définitivement jquery.validate.js.



1
votes

Utilisez la méthode $ .Ajax (). action (contrôleur de calendrier) b> p> xxx pré>

vue b>
p>

    $(document).ready(function () {
    $('#calendar').fullCalendar({

    events: function (start, end, callback) {
        $.ajax({
            url: '@Url.Content("~/Calendar/Events")',
            dataType: 'json',
            data: {
                start: start.toLocaleString("yyyy-mm-dd"),
                end: end.toLocaleString("yyyy-mm-dd")
            },  

            success: function (doc) {
                var events = [];
                $.each(doc, function (key, val) {
                    events.push({
                        title: val.title,
                        start: val.start, 
                        url: 'http://google.com'
                    });
                });  

                callback(events); 
            }  
        });  
    }  
    });  
    }) 


2 commentaires

Nope, le problème était définitivement la collision de noms que nous avons découverte l'année dernière. L'expansion de l'appel Ajax ne vous aiderait pas - mais en utilisant une version plus récente de JQuery.Validate.js a fait.


Il h. J'avais un problème similaire. Sauf le tutoriel que j'avais suivi spécifié Démarrer et se termine comme double, pas comme des chaînes. J'ai remarqué que dans votre code, ils étaient des cordes et je lui ai donné un coup de feu. S'avère que c'était correct et maintenant mon code GeveTents est appelé sur le backend. Poster ici au cas où il aide quelqu'un d'autre à l'avenir.