我的索引页面分为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");
}
答案 0 :(得分:1)
对于error
回调,您的问题很明显,请参阅评论。
对于success
回调,请尝试改为:
var $fileContent = $('#fileContent').before('<div id="swap"/>').detach()[0].innerHTML = data.substring(0, data.length - 4);
$('#swap').replaceWith($fileContent);