首页 新闻 搜索 专区 学院

Js 同步? 异步?

0
悬赏园豆:10 [已关闭问题]
代码
// JavaScript Document
var wait = 5;//等待时间
var timer = 10;//时间戳
var request = "cancel";
var global = 0;

//即时获取信息
function GetElectrical(id,htmlnode,obj,htmlstatus,control){
if(global == 0){
if(id.length == 0)
return false;
var Txt = IsButtonOrNode(obj);
//EnabledHtmlNode(obj,Txt);
document.getElementById(htmlnode).innerHTML = "正在加载中";
var url = "ResponseEvent.aspx?action=info&did="+id+"";
request
= AutoExecuteRequest(url,obj,Txt);
}
var result = "";
if(request != "cancel"){
if(request.indexOf('G') != -1){
var html = request.split('G');
if(html.length == 8){
var status;
if(html[0] == "01"){
status
= "合闸";
SetButtonOrNodeValue(control,
"即时拉闸");
}
else{
status
= "拉闸";
SetButtonOrNodeValue(control,
"即时合闸");
}
result
+="当前电压"+html[1]+"V<br />";
result
+="当前电流"+html[2]+"A<br />";
result
+="功率因素"+html[3]+"<br />";
result
+="有功功率"+html[4]+"Kw<br />";
result
+="无功功率"+html[5]+"Kvar<br />";
result
+="当前电量"+html[6]+"Kw/h<br />";
document.getElementById(htmlstatus).innerHTML
= "&nbsp;"+status;
}
}
document.getElementById(htmlnode).innerHTML
= result;
}
}

 

代码
//在特定的时间段内自动执行请求
function AutoExecuteRequest(url,obj,Txt){
global
++;
document.getElementById(obj).disabled
= true;
var requesturl = url +"&m="+timer+"";
request
= XmlHttpPostMethodText(requesturl,false);
if(request == "cancel"){
if(timer == "0"){//时间戳终止
document.getElementById(obj).disabled = false;
document.getElementById(obj).value
= Txt;
timer
= 10;
global
= 0;
}
else{
document.getElementById(obj).value
= Txt + timer;
timer
= timer - 1;
window.setTimeout(
"AutoExecuteRequest('"+url+"','"+obj+"','"+Txt+"',1000);
}
}
else{
document.getElementById(obj).value
= Txt;
document.getElementById(obj).disabled
= false;

global
= 0;
}
return request;
}
 
 

问题: 变量request 只能得到AutoExecuteRequest方法的第一次返回值,后面的就得不到了;

request = XmlHttpPostMethodText(url,false);//Ajax请求服务器相应
 
描述:现在JS的状态是这个样子的:

点击即时获取按钮 那么开始倒计时 这个时候有两种情况:
1.倒计时完毕 还是没有获得到值 那么本次所有请求终止
2.时间戳之内,获得到了值,那么按钮的value属性就是即时获取+当前倒计时的秒,

并且可以再次点击,但是页面元素还是原来那样子,没有被刷新,这个时候你如果再

次点击一次按钮,马上就会刷新页面元素

 



未达到的效果:应该是ajax取到了值之后就马上刷新页面元素的,但是现在却还要点击一次

 

另:如果AutoExecuteRequest方法把函数名做参数传递,我该如何在AutoExecuteRequest方法里面调用

传递过来的函数呢?

 

Jerry.Duan的主页 Jerry.Duan | 菜鸟二级 | 园豆:220
提问于:2010-06-24 09:42
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册