AJAX 在客户端提供状态事件,但是在您的情况下,我认为这不会很好,因为您想将进度发送给最终用户,我宁愿建议您通过使用 iframe 进行 ajax 调用来欺骗它,这将不断刷新从服务器到客户端的进度。
如果数据很大并且您开始绘制很明显您的浏览器将挂起,我建议您改进绘制机制以使用 setTimeout / setInterval,如果您按照步骤 1 进行操作,您可以开始使用来自服务器的刷新数据,而无需等待完整的数据直到结束
编辑 - 如何通过 iframe 显示进度
假设你有 main.aspx,你有你的全部内容并进行 ajax 调用
您还有一个 info.aspx,它将为您提供来自服务器的数据。
您的 info.aspx 包含 6 个步骤,并且您希望每一步都通知用户。
//Step 1 - do some thing
Response.Write("<script>progress = '10'; progressText = 'Completed step 1'; ");
Response.Write(" updateProgress(); </script>");
Response.Flush();
//Step 2 - do some thing
Response.Write("<script>progress = '30'; progressText = 'Completed step 2'; ");
Response.Write(" updateProgress(); </script>");
Response.Flush();
在上述情况下,我们正在更新 progress 和 progressText 变量并调用updateProgress()
javascript,updateProgress 看起来像
function updateProgress()
{
//update parent window/container on the progress which will show an visual indicator of the progress
}
updateProgress() 函数在开始时被刷新