我第一次进入ajax网页会给我带来一些问题。
我的基本结构是我在页面上有一个表,我想重新加载而不刷新整个页面。
所以当点击页面上的按钮时,它会触发:
function RefreshMissionsAjax() {
//fade out the old table.
$(clientID('MissionsDisplay')).fadeOut(500);
//request the new value from the page (calls the GetIncompleteMissions() method in the MissionViewer.aspx.cs page)
$.ajax({
type: "POST",
url: "MissionViewer.aspx/GetIncompleteMissions",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$(clientID('MissionsDisplay')).html(msg.d);
$(clientID('MissionsDisplay')).fadeIn(500);
},
error: function (xhr, ajaxOptions, thrownError) {
$(clientID('MissionsDisplay')).html('An error occured while trying to refresh the page data.');
$(clientID('MissionsDisplay')).fadeIn(500);
}
});
}
我有一个aspx页面的代码bedind:
[WebMethod]
public static string GetIncompleteMissions()
{
return GetHTMLTable();
}
这种方法只是抓取一些数据,并创建一个html表 - 没什么太奇特的。
当返回的表格很小(十几行或更少)时,它就像一个魅力。 但是当它变大时,需要很长时间 在100行时,可能需要5分钟来渲染表格 在1000行我已经离开它30分钟,在淡出后没有任何事情发生 (注意 - 在使用ajax刷新之前,它在页面加载上的加载相当快,因此不是实际的服务器端创建表的问题)。
这是我第一次做这样的事情的真正尝试,所以我不知道这是否是最好的方法 - 这只是我拼凑在一起的东西,当我用小数据集进行测试时效果很好。 现在,不是那么多。
任何想法如何使其可用?
答案 0 :(得分:1)
如果可能,请使用WCF,它应该快得多。
无论如何,不要传回原始HTML,让服务返回JSON格式的最小化数据,然后在onsuccess事件中使用这些数据来使用jQuery动态创建表。
例如,让服务返回包含1000个项目的JSON数组,然后迭代此数组并为每个项目添加一行。