Ajax调用返回大数据

时间:2014-03-01 08:21:33

标签: jquery asp.net-mvc

我的索引页面分为2.左侧是文件夹中的文档列表。 在选择文档时,我对控制器中的方法进行ajax调用,然后接收我在右侧显示的数据。

索引视图

<div id="files">
            <ul>
                @foreach (string file in ViewBag.Files)
                {
                    <li class="fileName">@file</li>
                }
            </ul>
        </div>
 <div id="fileContent">
     <h3>Choose a log file to view it's content</h3>    
 </div>

Jquery ajax call

$('.fileName').click(function () {
    var fileName = $(this).html();
    $(".loader").show();
    $.ajax({
        type: "POST",
        url: '@Url.Content("~/SystemReports/ViewContent")' + "?fileName=" + fileName,
        dataType: "text",
        data: {},
        success: function (data) {
            $('#fileContent').html(data);
        }
        ,error: alert('error')
    });
});

我遇到的第一个问题是,当进行调用时,会显示警报('错误'),然后才会访问控制器方法。我不知道为什么(如果你能帮助我这个,真的很感激)。

我遇到的第二个问题是,如果文件的内容非常大(例如超过:400.000个字符),浏览器会在尝试显示接收到的数据时冻结。我在success参数上尝试了以下内容:

success: function (data) {
      for(var i=0; i<=data.length-4; i++) <- -4 is because of some special char at the end
             $('#fileContent').append(data[i])

        }

控制器

public PartialViewResult ViewContent(string fileName){

     OpenFile(fileName);

return PartialView("PartialViewName");
}

1 个答案:

答案 0 :(得分:1)

对于error回调,您的问题很明显,请参阅评论。 对于success回调,请尝试改为:

var $fileContent = $('#fileContent').before('<div id="swap"/>').detach()[0].innerHTML = data.substring(0, data.length - 4);

$('#swap').replaceWith($fileContent);