我的ajax请求超时(或者真的很慢)

时间:2010-11-15 17:25:28

标签: asp.net ajax jquery

我第一次进入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刷新之前,它在页面加载上的加载相当快,因此不是实际的服务器端创建表的问题)。

这是我第一次做这样的事情的真正尝试,所以我不知道这是否是最好的方法 - 这只是我拼凑在一起的东西,当我用小数据集进行测试时效果很好。 现在,不是那么多。

任何想法如何使其可用?

1 个答案:

答案 0 :(得分:1)

如果可能,请使用WCF,它应该快得多。

无论如何,不​​要传回原始HTML,让服务返回JSON格式的最小化数据,然后在onsuccess事件中使用这些数据来使用jQuery动态创建表。

例如,让服务返回包含1000个项目的JSON数组,然后迭代此数组并为每个项目添加一行。