Превышен лимит рекурсии - PullRequest
       7

Превышен лимит рекурсии

1 голос
/ 03 декабря 2009

Я использую элемент управления jQuery Ajax с этого сайта http://abeautifulsite.net/2008/03/jquery-file-tree/

У меня все работает. Я пытался задать вопрос поддержки, но так и не получил ответ, думая, что кто-то здесь может пролить свет на ситуацию.

По сути, я пытаюсь выполнить выбор файла, выполнив действие, которое возвращает JsonResult, который дает более подробную информацию о файле и затем отображает их на экране в контейнере. Пока я отлаживаю, метод получает удар, возвращает правильные данные. После возврата в вызове ajax я получаю ошибку в firebug о том, что предел рекурсии превышен. Я не уверен, как обойти это ... Я думал, что я мог бы использовать обратный вызов метода fileTree (параметры, обратный вызов), но это не срабатывает при выборе файла только инициализации дерева файлов. Есть идеи?

Вот что я сделал с помощью 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');
}

Вот мое действие, которое берет данные и возвращает 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);
        }

1 Ответ

4 голосов
/ 03 декабря 2009

Очевидно, что возвращение объекта FileInfo неприемлемо для JsonResult. Упрощая возврат, я изменил его на:

return Json("helloWorld"); 

и все мои проблемы ушли. Не уверен, почему это волнует, что я пытался вернуть тип FileInfo, но в любом случае проблема была решена, когда я изменил его, чтобы вернуть строку. Так что теперь я просто создаю небольшой класс-обертку для хранения данных, которые я хочу передать, и жизнь в порядке.

Спасибо! Надеюсь, это поможет кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...