.利用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代码访问这个变量并且在前—IV里显示总是显示0,并且提示JS错误传递的参数无效.以前都是这样访问后台数据的没出现过问题.所以现在很郁闷
高手们都来看看吧.100分!解决问题后再散100分!帮顶的都有分~~大家快来救命啊~~
[解决办法]
受不了 LZ 小男子??
[解决办法]
............稀里哗啦吐了
[解决办法]
e~~
[解决办法]
............稀里哗啦吐了
[解决办法]
那就来接点分吧
[解决办法]
帮顶 接分
[解决办法]
俺专程进来吐的...
[解决办法]
setTimeout( "startRequest() ",1000)
[解决办法]
而且貌似你的程序如果有缓存的话,就第一次有效,以后就。。。。。
[解决办法]
JF
[解决办法]
通过添加按钮的客户端JS脚本触发每1秒访问一次Percent这个变量
也不是通过setTimeout实现的,要用setInterval
[解决办法]
顶
[解决办法]
人才!!
[解决办法]
btnUpload.Attributes.Add( "onclick ", "javascript:window.setTimeout(startRequest(),1000); ");
改为:
btnUpload.Attributes.Add( "onclick ", "javascript:window.setInterval( "startRequest() ",1000); ");
至于原因请在网上找找资料看看setInterval和setTimeout的区别
[解决办法]
xmlHttp.open( "GET ", 'GetFileInfo.aspx ', true);
改为:
xmlHttp.open( "GET ", 'GetFileInfo.aspx? '+Math.random(), true);
避免IE缓存带来的问题
[解决办法]
使用 setInterval 还出现找不到fileUploadState的问题?
[解决办法]
在运行的时候看下页面源码,看有没有什么问题(HTML数据是否正常)
如果正常那么进行下面的测试:
document.all[ 'fileUploadState '].innerHTML=xmlHttp.responseText;
改为
alert(xmlHttp.responseText);
现在测试,先把setInterval的第2个参数设大点,不然就要从进程里关页面了,嘿嘿...
[解决办法]
搂主,我给你发了消息的,看看消息吧
[解决办法]
wo shi lai jie fen de
[解决办法]
每秒发一次请求,有并发问题吧
[解决办法]
关注+学习!