日期:2014-05-18  浏览次数:20462 次

.利用AJAX及时获取后台值的一个问题,高手进来帮忙看看.小男子在这有礼了..@#$%^&*(()_<>"{救命啊!!!
后台的类里有个int类型变量Percent不断地+1(可以确定在程序运行的时候值是不断增加的)

前台服务器端控件button在Page_Load的代码

btnUpload.Attributes.Add( "onclick ",   "javascript:window.setTimeout(startRequest(),1000); ");//这里是调用XMLHttp的   startRequest()

通过添加按钮的客户端JS脚本触发每1秒访问一次Percent这个变量代码如下:

Response.Write(我的类名.Percent.ToString());//返回给XMLHttp

//-----------------------------这里是startRequest()的JS脚本
var   xmlHttp;      
function   createXMLHttpRequest()   {

//如果是IE,用activexobject
        if   (window.ActiveXObject)   {
                xmlHttp   =   new   ActiveXObject( "Microsoft.XMLHTTP ");
        }  

//如果其它浏览器就用XMLHttpRequest
        else   if   (window.XMLHttpRequest)   {
                xmlHttp   =   new   XMLHttpRequest();
        }
}    
//开始函数
function   startRequest()   {
        createXMLHttpRequest();
        //创建一个新的http请求,并指定此请求的方法、URL以及验证信息
        xmlHttp.open( "GET ", 'GetFileInfo.aspx ',   true);
        //指定当readyState属性改变时执行的函数
        xmlHttp.onreadystatechange   =   handleStateChange;
        //发送请求到http服务器并接收回应
        xmlHttp.send(null);
}


function   handleStateChange()   {
 //4数据接收完毕
        if(xmlHttp.readyState   ==   4)   {
                //200返回请求状态为OK
                if(xmlHttp.status   ==   200)   {
   //弹出对话框,并输入simpleResponse.xml文件的文本内容
try{
document.all[ 'fileUploadState '].innerHTML=xmlHttp.responseText;
}
catch(e)
{
document.all[ 'fileUploadState '].innerHTML=e;
}
                }
        }
}
//------------------------------
***********************************************************************

通过不断地调试:
1.确定Percent这个变量在不断变化
2.XMLHTTP访问后台时候第1次读取Percent成功并且在前台显示后提示传递的参数无效..
    我的JS代码就上面的再也没了.
3.总结一下我这个做的是文件上传,现在已经可以通过IO实时获取当前文件上传的进度也就是变量Percent(百分比),现在用上面的XMLHTTP代码访问这个变量并且在前台DIV里显示总是显示0,并且提示JS错误传递的参数无效.以前都是这样访问后台数据的没出现过问题.所以现在很郁闷

高手们都来看看吧.100分!解决问题后再散100分!帮顶的都有分~~大家快来救命啊~~

------解决方案--------------------
受不了 LZ 小男子??
------解决方案--------------------
............稀里哗啦吐了
------解决方案--------------------
e~~
------解决方案--------------------
............稀里哗啦吐了

------解决方案--------------------
那就来接点分吧
------解决方案--------------------
帮顶 接分
------解决方案--------------------
俺专程进来吐的...
------解决方案--------------------
setTimeout( "startRequest() ",1000)