function getdivid() 
{
var xml1 = getXMLHttpRequest();
        xml1.open("POST", "view.aspx",true);//这个地方我已经调回了正确的层ID名称
        xml1.send(null);
        var id=xml1.ResponseText;
var idvalue=document.getElementById("text1");
document.getElementById(id).innerHTML=idvalue.value;
}如上面所示,text1是一个文本框的名称
为什么它老报错呢?我写的出错在哪儿了?应该如何写呢?
我知道的好像是
document.getElementById(id).innerHTML这句上错了,如果把id直接写成"div1"就可以成功实现
或者把var id=xml1.ResponseText;
改为:
var id="div1";
也可以实现.
但为什么用xml1.ResponseText调用出来的就不能实呢?
xml1.ResponseText调用输出出来的结果也是div1有没有人告诉我这是为什么?并且告诉我如何解决这个问题?

解决方案 »

  1.   

    正常来说,你的Ajax是异步的,那么像你那样写肯定有问题。这样写才对function getdivid() {
    var xml1 = getXMLHttpRequest();
        xml1.open("POST", "view.aspx", true);  //这个地方我已经调回了正确的层ID名称
        xml1.onreadystatechange = function(){
            var id = xml1.ResponseText;
            var idvalue = document.getElementById("text1");
            document.getElementById(id).innerHTML = idvalue.value;        
        }
        xml1.send(null);
    }
      

  2.   

    晕,忘了判断status.
    function getdivid() {
    var xml1 = getXMLHttpRequest();
        xml1.open("POST", "view.aspx", true);  //这个地方我已经调回了正确的层ID名称
        xml1.onreadystatechange = function(){
            if(xml1.readyState == 4) {
                if(xml1.status == 200) {
                    var id = xml1.ResponseText;
                    var idvalue = document.getElementById("text1");
                    document.getElementById(id).innerHTML = idvalue.value;
                }
            }        
        }
        xml1.send(null);
    }