回 帖 发 新 帖 刷新版面

主题:关于xmlhttp的问题???

我用xmlhttp写了一段无刷新提交表单的程序,但是有些问题搞不清楚:

var getrs= new ActiveXObject("Microsoft.XMLHTTP");
getrs.open("post","getdateindb.asp?id="+id+"&username="+username+"&name="+name+"&brithday="+brithday+"&idcard="+idcard+"&sex="+sex+"&reason="+reason,false);
getrs.send();

到这里一般是进行判断,当getrs.onreadystatechange改变时,判断getrs.readyState是否等于4,是则用getrs.responseText取值。



但是在应用过程中发现,有的时候,getrs.send();后getrs.readyState不等于4,于是上面的程序执行正常,但是有时候,getrs.send();后getrs.readyState等于4,于是根本就没有getrs.onreadystatechange,于是下面的代码就不会执行?大家对于这个问题是怎么解决的呢?我现在把后面的代码改成这样:

if (getrs.readyState==4){
        if (getrs.responseText=="ok"){
        obj.disabled=true;
        }
    }else{
        if (getrs.onreadystatechange){
            if (getrs.readyState==4){
                if (getrs.responseText=="ok"){
                obj.disabled=true;
                }
            }
        }
    }
    
觉得这样不太方便,因为如果if (getrs.responseText=="ok"){obj.disabled=true;}这个部分的代码比较长,那这种写法就很麻烦了,如果把这些写成一个单独的函数,虽然代码减少了一半,但是数据传递又很麻烦。

有没有一种写法能让代码简单些?

大家帮忙看一下,谢谢了。

回复列表 (共3个回复)

沙发

自己顶一下。

板凳

我一般只作一次判断:
if getrs.readystate=4 then

'这里是处理代码

end if

由于无刷新需要每隔一定的时间跨度来重复执行的,
所以总有一次是能够被成功执行的。

另外,如果是winxp系统,则有可能没有一次是成功的,
就好象是编程爱好者论坛左边的那个iframe表现出来的情况一样。

3 楼

那要如何解决这个问题呢?难道非要两次判断吗?能不能人为的让if getrs.readystate=4 then语句的执行延迟1秒呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册