日期:2014-05-19  浏览次数:20374 次

从html和js的角度看, 解释下ASP.NET AJAX中的UpdatePanel和UpdateProgress的原理?

    就是说在浏览器中查看使用了UpdatePanel和UpdateProgress的页面的源代码,   知道它们的工作原理吗?

------解决方案--------------------
http://www.cnblogs.com/whitetiger/archive/2007/04/01/695731.html
UpdatePanel

http://blog.csdn.net/sypxue/archive/2006/12/26/1463730.aspx
UpdateProgress

看看这2个,应该有点帮助吧
------解决方案--------------------
实际上就是使用xmlhttp对象 从服务器端获取 上传的情况,
再用js动态绘制 进度条 一般就是两个div模拟

------解决方案--------------------
//初始化httprequest对象
function InitAjaxSend()
{
var ajax = false;
if(window.XMLHttpRequest)
{
ajax = new XMLHttpRequest();
if(ajax.overrideMimeType)
http_request.overrideMimeType( "text/xml ");
}
else if(window.ActiveXObject)
{
try
{ ajax = new ActiveXObject( "Msxml2.XMLHTTP ");}
catch(e)
{ try{ajax = new ActiveXObject( "Microsoft.XMLHTTP ");
}catch(e){}
}
}
if(!ajax)
{
alert( "不能创建XMLHttpRequest对象实例 ");
return null;
}
return ajax;
}
这是初始化一个异步请求对象的基本方法,所有的处理都依赖于这个对象,之后该对象就发送数据以及监听状态,function AjaxSend(url,fSuccess,fError,modle,target)
{
var ajaxSend = InitAjaxSend();
ajaxSend.open( "GET ",url,modle);
ajaxSend.onreadystatechange = function()
{
if(ajaxSend.readyState == 4 && ajaxSend.status == 200)
{
var xmlBack = ajaxSend.responseXml;
if(typeof(eval(fSuccess))!= "undefined ")
eval(fSuccess)(xmlBack,ajaxSend.responseText,target);
}
else if(ajaxSend.readyState == 4)
{
if(typeof(eval(fError))!= "undefined ")
eval(fError)();
}
}
ajaxSend.send(null);
}
onreadystatechange 是定义该对象请求结束之后的处理函数,
if(ajaxSend.readyState == 4 && ajaxSend.status == 200)
这条是判断请求返回的状态,是成功还是失败,
var xmlBack = ajaxSend.responseXml;
这里就是获取请求后返回的数据,你可以在这里增加js函数,对这些数据进行整理排版,更新到网页的任意位置.
基本原理,熟悉了,可以自己写ajax应用,不推荐用第三方的控件
------解决方案--------------------
第三方控件都有了,为什么不用了,何必自己还要去写了,但是真的不知道是自己写的好了,还是用第三方的好?
------解决方案--------------------
自己写的肯定可扩展性强,但是麻烦!