1 votes

Limite de récursivité dépassée

J'utilise un contrôle Ajax jQuery de ce site http://abeautifulsite.net/2008/03/jquery-file-tree/

Tout fonctionne. J'ai essayé de poser une question d'assistance mais je n'ai pas eu de réponse, je pense que quelqu'un ici peut peut-être m'éclairer sur la situation.

En gros, ce que j'essaie de faire, c'est que sur une sélection de fichier, je lance une action qui renvoie un JsonResult, qui donne plus de détails sur le fichier, puis je l'affiche à l'écran dans un conteneur. Pendant que je débogue, la méthode est exécutée et renvoie les données correctes. Après le retour de l'appel ajax, j'obtiens une erreur dans firebug disant que la limite de récursion a été dépassée. Je ne sais pas trop comment contourner ce problème... Je pensais pouvoir utiliser le callback de la méthode fileTree(options, callback) fournie, mais il n'est pas déclenché lors de la sélection du fichier, seulement lors de l'initialisation de l'arbre des fichiers. Une idée ?

Voici ce que j'ai fait via JavaScript

function initFileTree() {

    $('#fileTree').fileTree({ root: '/', script: '/Scripts/filetree/jqueryFileTree.aspx', multiFolder: false, expandEasing: 'easeOutBounce', collapseEasing: 'easeOutBounce' }, function(file) {

        getFileDetails(file);

    });

}

function getFileDetails(file) {

    // alert(file);

    $.getJSON('/Files.mvc/GetFileDetails', { Data: file }, function(data) {
        $('#fileDetail').html('<h6>Selected File: ' + data.Length + '</h6>');
    }, 'json');
}

Voici mon action qui prend les données et renvoie un résultat JsonResult

public virtual JsonResult GetFileDetails(string data)
        {
            string pageMessage = null;

            FileInfo fileInfo = null;

            try
            {
                fileInfo = new FileInfo(data);
            }
            catch (Exception e)
            {
                pageMessage = e.Message;    
            }

            return Json(fileInfo);
        }

4voto

Gabe Points 24378

Apparemment, renvoyer un obj FileInfo n'est pas acceptable pour un JsonResult. En simplifiant le retour, je l'ai changé en :

return Json("helloWorld");

et tous mes problèmes ont disparu. Je ne sais pas trop pourquoi il se soucie du fait que j'essayais de retourner un type FileInfo, mais de toute façon le problème a été résolu quand j'ai changé pour retourner une chaîne de caractères. Maintenant, je crée juste une petite classe pour contenir les données que je veux renvoyer et la vie est belle.

Remerciements ! J'espère que cela aidera quelqu'un d'autre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X