2009-12-03 97 views
1

我使用本网站http://abeautifulsite.net/2008/03/jquery-file-tree/递归限制超出

一个jQuery Ajax控件我把它所有的工作。我试图提出一个支持问题,但从来没有听到过,认为也许有人在这里可以了解情况。

基本上我想要做的是在文件选择上运行一个返回JsonResult的动作,该动作给出关于该文件的更多细节,然后将它们显示在容器中的屏幕上。当我调试时,该方法被击中,返回正确的数据。在ajax调用返回后,我得到一个萤火虫错误,说超过了递归限制。我不知道如何解决这个问题......我想我可以使用提供的fileTree(options,callback)方法的回调函数,但不会在选择文件时触发文件树的初始化。有任何想法吗?

继承人什么我通过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); 
     } 
+0

与萤火虫什么是你从服务器发送回来的json字符串? – PetersenDidIt 2009-12-03 19:26:07

回答

4

显然返回一个FileInfo obj不是一个JsonResult接受。简化回报,我将其更改为:

return Json("helloWorld"); 

和我所有的问题都消失了。不知道为什么它在意我试图返回一个FileInfo类型,但是当我改变它返回一个字符串时,任何一种方式问题都解决了。所以现在我只是创建一个小的包装类来保存我想要传回的数据,并且生活很好。

谢谢!希望这可以帮助别人。

+0

也一定要接受你自己的答案... – 2009-12-04 18:41:20