解决方案 »
- 用户控件怎样提取JS函数值?
- 请问在SQL里怎么改变这个字段呢?
- 发生类型为 System.ArgumentException 的异常。 搜索无解,请帮忙
- 请高手帮忙:异常详细信息: System.Data.SqlClient.SqlException: 第 1 行: '17' 附近有语法错误。
- 50分请教高手一个关于动态创建表的问题
- 请教一个简单的数据库连接代码问题!!
- Coolite 出现 Ext 未定义错误,用这个的帮帮忙
- 方案中,请问如何在asp,aspx,html 间传递 Session,Cook...
- 请问:如何让一个变量在页面PostBack之后仍保持其原有的值?
- razor模板,嵌套,if条件解析报错
- Web页面的响应能不能阻塞 “2分钟” ???
- 如何在C#中加密字符串,然后在Asp中解密该字符串?
可怜的新人完全没有人鸟啊啊啊啊啊!求大大们HELP啊= =!
关键字 Js 进度条。 Jquery 进度条 都行。
结果后面来句IE不能用,瞬间心都碎了……这MIS系统只能用IE…………
现在我写了个测试页,按钮事件是用JQ访问后台的一个方法,用全局变量去保存循环的数字。
同时还弄了setInterval定时执行一个新方法,新方法也是用AJAX去访问后台,想这样子去拿全局变量然后返回到前台,各种出不来……返回出来的数字始终是0/0……还是对这个机制不太理解 哎。。
现在我写了个测试页,按钮事件是用JQ访问后台的一个方法,用全局变量去保存循环的数字。
同时还弄了setInterval定时执行一个新方法,新方法也是用AJAX去访问后台,想这样子去拿全局变量然后返回到前台,各种出不来……返回出来的数字始终是0/0……还是对这个机制不太理解 哎。。
你返回的是字符串吗?断点看一下你返回给前台的数据是什么。
JS里的(原谅小白连怎么JQ里写自定义函数都不知道……)
var xmlHttp;
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
xmlHttp = new XMLHTTPRequest();
} function createRequest()//向服务器发出请求也就是向Default.aspx页面发出请求;
{
xmlHttp.onreadystatechange = DoResponse; //DoResponse是个回调函数
xmlHttp.open("GET", "AjaxDownload.aspx?Down=T", true);
xmlHttp.send(null);
} function DoResponse()//服务器Default.aspx响应本页面并从服务器带回xmlHttp.responseText;
{
if (xmlHttp.readystate == 4 && xmlHttp.status == 200) {
document.getElementById("ResponseText").innerHTML = xmlHttp.responseText;
}
}
function clock() {
createRequest();
} $(function() {
var clearflag;
$("#btn2").click(function() {
clearflag = self.setInterval("clock()", 500);
$.ajax({
type: "Get",
url: "AjaxDownload.aspx",
dataType: "text",
data: "Down=C",
success: function(data) {
window.clearInterval(clearflag);
alert(data);
}
});
}); //btn2 click end }); //jq end
HTML的
<input type="button" id="btn2" value="AjaxThread" />
private int cur;
private int total; protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["Down"] == "C")
{
ThreadTest();
}
if (Request.QueryString["Down"] == "T")
{
ResponseProgress();
}
}
} private void ThreadTest()
{
for (int i = 0; i < 5; i++)
{
this.cur = i+1;
this.total = 5;
Thread.Sleep(1000);
}
Response.Write("Complete!" + this.cur + "/" + this.total);
Response.End();
} private void ResponseProgress()
{
Response.Buffer = true;
Response.Write(this.cur + "/" + this.total);
Response.Flush();
Response.End();
}
我想明白其中涉及到的原理,为啥这个代码不能按预期的结果工作,应该如何解决,而不单单是用控件解决……(控件的代码也看不懂 T_T)
.net ajax里面有个timer控件,用这个控件实时的更新你的进度条,视乎能简单些。
因为这个MIS系统只能使用IE,那么是否可以确保用户能够升级到IE8(这个版本也可以支持Win XP)或以上?如果可以,那么应该可以实现你的需求,你可以点击上面文章里面提供的一个演示页面中的第二个按钮"Try XDR with prelude",看看是否可以看到1-10的进度。具体的js代码,可以在浏览器里面查看网页的源码。
注意因为IE浏览器和某些版本的Chrome的浏览器的原因,浏览器在收到2KB数据之前不会给出下载提示,所以服务器可以在相应中先发送2KB的空格。
看到标题就激动了一下,看到前面的话就更激动了简直就是我心中所想的资料。
结果后面来句IE不能用,瞬间心都碎了……这MIS系统只能用IE…………
我想大多数人都喜欢拿“数据库表”来理解内容通讯,那么我们就拿数据库表来理解。比如说你可以创建一个数据库表:进度条(id,总长度,当前长度)。这其实就完毕了!然后你的ajax去把这个信息读取出来显示,而已。ajax只能单向轮询,这是所有(现在的)网页程序的硬伤。各种新奇的什么“连接”,还没有达到靠谱的程度。不然也就不用花了好几年还有那么一大帮人到处在忽悠什么“html5、websocket”等等名词儿了,如果它不是因为技术上可靠性低早就应该普及了。所以你也不用过多跟风去折腾这些代码,那类代码对于你来说只能说是“学习”,根本不实用。而从你的“后台”架构设计来看,进行所谓的“数据验证”如果是长时间的任务,那么你应该设计一个通用的“进度条”系统。这就是把进度条记录在上述数据库中表中,等待各种前端系统来查询。不要纠结在一起,想什么复杂的思路。
2. 前端然后定时轮询这个id号的任务的进度条,显示出来。就这么简单。(貌似)更好的方案当然是存在的!但是,如果技术上不有足够把握,如果根本不稳定可靠,如果没有经过大规模的测试,再时髦也不能在实际产品中采用。
你的后台程序还 Response 输出?搞复杂了,太技术化了,你其实被技术给玩儿“坏”了。简单傻瓜的方法(后台程序根本不需要 Response 任何信息),首先能够达到目的。然后有空闲时间时再去重构。
两个变量用session或viewstate来存取
你的后台程序还 Response 输出?搞复杂了,太技术化了,你其实被技术给玩儿“坏”了。简单傻瓜的方法(后台程序根本不需要 Response 任何信息),首先能够达到目的。然后有空闲时间时再去重构。
多谢SP大大指点!不甚感激!新人小白表示现在就懂点皮毛,太容易迷茫……
现在是只会显示输出一次的数字 1/5 然后数字就不变了……