在asp.net页面的Page_Load期间,“请等待,加载...”文本

时间:2016-03-14 11:52:14

标签: c# jquery asp.net ajax

在我的Page_Load中(在Default.aspx上)我调用一个方法,最后显示一些图像&页面上的文字。这需要大约30秒才能加载,因为它可以从各种外部API中获取这些内容。 所以我认为在这段时间内有一个“请等待,加载应用程序......” - 文本会很好。

在咨询Google之后,我想使用Ajax / jQuery会是正确的。 但我不知道如何真正实现这一目标?或者你们会提出完全不同的建议吗?

当然我发现了一些提示,但它们并没有真正帮助,因为它们只是按下按钮或类似物。

我感谢任何帮助: - )

2 个答案:

答案 0 :(得分:3)

AJAX是要走的路。在呈现要发送到客户端的页面的过程中调用Page_Load事件。如果没有完成,则不会向客户端发送任何内容。因此,您首先必须向客户发送内容,然后您可以从那里开始。

你想要一个像我这样的机制:

  • 像现在一样生成ASP.NET页面。删除Page_Load中可以移动到其他位置的所有代码。在该页面上显示等待光标;
  • 创建一个web service method,以便能够获取长篇文章。
  • 调用Web服务方法并在完成后加载检索到的结果。

答案 1 :(得分:0)

感谢Patrick Hofman,我能够达到我想要的效果。 对于代码示例,我使用了http://www.c-sharpcorner.com/UploadFile/dacca2/understand-jquery-ajax-function-call-web-service-using-jque/

如果有人对代码感兴趣,请转到此处。由于它不是那么多,我将发布完整的信息。

这将启动页面,显示加载文本,5秒后,文本切换到Web服务方法的结果(在同一项目中)。

<强> Default.aspx的

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>
<!DOCTYPE html>    
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script>

        $(document).ready(function () {

            $.ajax({
                type: "POST",
                url: "SuperWebSvc.asmx/GetData",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    var names = response.d;
                    // do here, whatever you want to do, after the web service method returned its stuff
                    $('#Content').html(names); // replaces the content of the div with id "content" (only for demo purposes, to keep it simple)
                },
                failure: function (response) {
                    alert(response.d); // show an alert box, if something goes wrong
                }
            });
        });
    </script>
</head>
<body>    
    <form id="frm" method="post">
        <div id="Content">
            Please wait, fetching data...
        </div>    
    </form>    
</body>
</html>

网络服务(SuperWebSvc.asmx)

using System;
using System.Collections.Generic;
using System.Threading;
using System.Web.Script.Serialization;
using System.Web.Services;

namespace WebApplication1
{       
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class SuperWebSvc : System.Web.Services.WebService
    {    
        [WebMethod]
        public string GetData()
        {
            Dictionary<string, string> name = new Dictionary<string, string>();
            name.Add("1", "Luke Skywalker");
            name.Add("2", "Han Solo");
            string myJsonString = (new JavaScriptSerializer()).Serialize(name);
            Thread.Sleep(5000); // wait for 5 seconds, this is just for demo purposes
            return myJsonString;
        }
    }
}