在我的Page_Load中(在Default.aspx上)我调用一个方法,最后显示一些图像&页面上的文字。这需要大约30秒才能加载,因为它可以从各种外部API中获取这些内容。 所以我认为在这段时间内有一个“请等待,加载应用程序......” - 文本会很好。
在咨询Google之后,我想使用Ajax / jQuery会是正确的。 但我不知道如何真正实现这一目标?或者你们会提出完全不同的建议吗?
当然我发现了一些提示,但它们并没有真正帮助,因为它们只是按下按钮或类似物。
我感谢任何帮助: - )
答案 0 :(得分:3)
AJAX是要走的路。在呈现要发送到客户端的页面的过程中调用Page_Load
事件。如果没有完成,则不会向客户端发送任何内容。因此,您首先必须向客户发送内容,然后您可以从那里开始。
你想要一个像我这样的机制:
Page_Load
中可以移动到其他位置的所有代码。在该页面上显示等待光标; 答案 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;
}
}
}