C# &引用;请稍候,正在加载…”;在asp.net页面上加载页面时的文本
在我的页面加载(在Default.aspx上)中,我调用了一个方法,该方法最后在页面上显示一些图像和文本。这需要超过30秒的时间来加载,因为它可以从各种外部API获取这些内容。 所以我想在这段时间内有一个“请稍候,正在加载应用程序…”的文本会很好 在咨询过Google之后,我想使用Ajax/jQuery是正确的选择。 但我不知道,如何真正做到这一点?或者你们会提出完全不同的建议吗 当然,我发现了一些提示,但它们并没有真正的帮助,因为它们只是从按下按钮或类似的动作开始的C# &引用;请稍候,正在加载…”;在asp.net页面上加载页面时的文本,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,在我的页面加载(在Default.aspx上)中,我调用了一个方法,该方法最后在页面上显示一些图像和文本。这需要超过30秒的时间来加载,因为它可以从各种外部API获取这些内容。 所以我想在这段时间内有一个“请稍候,正在加载应用程序…”的文本会很好 在咨询过Google之后,我想使用Ajax/jQuery是正确的选择。 但我不知道,如何真正做到这一点?或者你们会提出完全不同的建议吗 当然,我发现了一些提示,但它们并没有真正的帮助,因为它们只是从按下按钮或类似的动作开始的 我非常感谢您的帮助:-)A
我非常感谢您的帮助:-)AJAX是一条可行之路。在呈现要发送给客户端的页面的过程中调用
Page\u Load
事件。如果未完成,则不会向客户端发送任何内容。因此,您首先必须向客户发送一些东西,然后才能从那里开始
你想要一个类似这样的机制我想:
- 像现在一样生成ASP.NET页面。从加载的
页面中删除所有可以移动到其他地方的代码。在该页面上显示等待光标李>
- 创建一个可以获取长时间占用的资源
- 调用web服务方法并在完成后加载检索到的结果
- 多亏了帕特里克·霍夫曼,我才能够实现我想要的。
对于代码示例,我使用
如果有人对代码感兴趣,给你。因为没有那么多,我将发布完整的信息
这将启动页面,显示加载文本,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>
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; } } }
Web服务(superwebvc.asmx)$(文档).ready(函数(){ $.ajax({ 类型:“POST”, url:“SuperWebSvc.asmx/GetData”, contentType:“应用程序/json;字符集=utf-8”, 数据类型:“json”, 成功:功能(响应){ var name=response.d; //在web服务方法返回其内容后,在这里执行您想要执行的任何操作 $('#Content').html(name);//将div的内容替换为id“Content”(仅用于演示目的,以保持简单) }, 故障:功能(响应){ 警报(response.d);//如果出现问题,显示警报框 } }); }); 正在提取数据,请稍候。。。
在此处输入一些相关代码@smitpatel您会建议使用什么代码如果您能将问题缩小到特定的行,并明确提出关于某一特定事物的问题,您将获得更好的回答。正如指南中所解释的,创建一个。因为我不知道从哪里开始,所以我没有代码可以显示。目前我所能提供的一切都是在Page_Load中的一行方法调用。谢谢您的输入。啊,好的!一个web服务方法!我假设我可以对一个常用方法进行正常调用。我现在就去看看。从未使用过Ajax,所以这对我来说是全新的。使用web方法,您可以向外部公开一些信息。你不能仅仅从HTML页面调用任何方法。使用系统; 使用System.Collections.Generic; 使用系统线程; 使用System.Web.Script.Serialization; 使用System.Web.Services; 命名空间WebApplication1 { [WebService(命名空间=”http://tempuri.org/")] [WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] [System.Web.Script.Services.ScriptService] 公共类SuperWebVC:System.Web.Services.WebService { [网络方法] 公共字符串GetData() { 字典名称=新字典(); 名称。添加(“1”、“卢克·天行者”); 名称。添加(“2”、“汉·索洛”); 字符串myJsonString=(新的JavaScriptSerializer()).Serialize(名称); Thread.Sleep(5000);//等待5秒,这只是为了演示 返回myJsonString; } } }