<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>JS 进度条和等待框</title>
<script language="javascript" type="text/javascript">
var AjaxService = function (url, param) {
//创建XMLHTTP
var createXmlHttp = function () {
var xmlhttp = null;
try {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{ }
if (xmlhttp == null) {
try {
xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e)
{ }
if (xmlhttp == null) {
try {
xmlhttp = new XMLHttpRequest();
}
catch (e)
{ }
}
}
}
catch (e)
{ }
return xmlhttp;
}
// 给 URL 参数增加随机数字
String.prototype.toRandom = function () {
var res;
if (this == "") {
res = "s=" + Math.random();
}
else {
res = this + "&s=" + Math.random();
}
return res;
}
// 同步操作
this.inPhase = function () {
var msg;
var xmlhttp = createXmlHttp();
if (xmlhttp == null) {
alert("创建XMLHTTP出错!");
return -1;
}
xmlhttp.Open("GET", url + "?" + param.toRandom(), false);
xmlhttp.Send();
if (xmlhttp.status == 200) {
msg = xmlhttp.responseText;
xmlhttp = null;
}
return msg;
}
// 异步执行 completeMethod : 封装的一个方法,包含一个参数
this.asynchronism = function (completeMethod) {
var msg;
var xmlhttp = createXmlHttp();
if (xmlhttp == null) {
alert("创建XMLHTTP出错!");
return -1;
}
//打开连接,true表示异步提交,url 为接收请求并进行处理的页面
xmlhttp.open("post", url + "?" + param.toRandom(), true);
//当方法为post时需要如下设置http头
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
//发送数据
xmlhttp.send(null);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status ==200) {
msg = xmlhttp.responseText;
xmlhttp = null;
if (completeMethod != null) {
completeMethod(msg);
}
}
}
}
}
// GIF 等待框
function waitGif() {
var name, age;
name = document.getElementById("txtUserName").value;
age = document.getElementById("txtAge").value;
var url = "AjaxPage.aspx"
var param = "name=" + escape(name) + "&age=" + escape(age) + "×=" + escape(document.getElementById("txtWaitTimes").value);
var ajax = new AjaxService(url, param);
// 同步执行,锁屏无效果
// document.getElementById("divMsg").innerHTML = "Request Value :" + ajax.inPhase();
//异步执行
/// XmlHttp 异步执行后回调方法
var completeMethod = function (msg) {
document.getElementById("divMsg").innerHTML = "Request Value " + msg;
unLockScreen();
}
lockscreen(); //锁屏
ajax.asynchronism(completeMethod);
}
/// 锁屏
function lockscreen() {
var sWidth, sHeight;
var imgPath = "loading.gif";
sWidth = screen.width - 20;
sHeight = screen.height - 170;
var bgObj = document.createElement("div");
bgObj.setAttribute("id", "divLock");
bgObj.style.position = "absolute";
bgObj.style.top = "0";
bgObj.style.background = "#cccccc";
bgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
bgObj.style.opacity = "0.6";
bgObj.style.left = "0";
bgObj.style.width = sWidth + "px";
bgObj.style.height = sHeight + "px";
bgObj.style.zIndex = "100";
document.body.appendChild(bgObj);
var html = "<table border=/"0/" width=/"" + sWidth + "/" height=/"" + sHeight + "/"><tr><td valign=/"middle/" align=/"center/"><image src=/"" + imgPath + "/"></td></tr></table>";
bgObj.innerHTML = html;
/// 解锁
bgObj.onclick = function () {
// unLockScreen();
}
}
/// 解锁
function unLockScreen() {
var divLock = document.getElementById("divLock");
if (divLock == null) return;
document.body.removeChild(divLock);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="divMsg">
</div>
<br />
Your name:<input type="text" id="txtUserName" value="陈浩南" /><br />
Your age:<input type="text" id="txtAge" value="28" /><br />
Wait Time:<input type="text" id="txtWaitTimes" value="1000" /><br />
<input type="button" id="btnGif" runat="server" value="提交显示Gif等待框" οnclick="waitGif();" />
</div>
</form>
</body>
</html>
AjaxPage.aspx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Threading;
public partial class AjaxPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int times = 0;
int.TryParse(Request.QueryString["times"] + string.Empty, out times);
Thread.Sleep(times);
Response.Write("<br>Your name : " + Request.QueryString["name"] + string.Empty);
Response.Write("<br>Your Age : " + Request.QueryString["age"] + string.Empty);
Response.Flush();
}
}
注意:
1..应用程序名不能有汉字