xmlhttp.responseBody这个返回的是二进制数据.你想要什么??
xmlhttp.responseText
xmlhttp.responseXML

解决方案 »

  1.   

    把  if(lrchtml==''){
    readlrc2(specid,songid);
    }
     
    放到onreadystatechange 的函数里
    因为你send之后再执行你的if,可能数据没有返回回来
    所以可能是空
      

  2.   

    //////////////////
    把  if(lrchtml==''){
    readlrc2(specid,songid);
    }
     
    放到onreadystatechange 的函数里 
    //////////////////这样还是没能改变全局变量lrchtml的值,我需要改变它的值,因为后面还有很多地址要用到这个变量的!
      

  3.   

    肯定是空的,你的函数在Ajax中还没有返回lrchtml的值那
      

  4.   

    xmlhttp = getXMLHttpRequest();
        xmlhttp.open("GET", "aaa.asp?url=http://xxx.xxx.xxx.xxx:xxx/lrc/10566/1.lrc", true);  
        xmlhttp.onreadystatechange = function fnRun(){
    if((xmlhttp.readyState == 4) && (xmlhttp.status == 200)){
    lrchtml = gb2utf8(xmlhttp.responseBody);
                                if(lrchtml==''){
                   readlrc2(specid,songid);
                       }
    }
    }  
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xmlhttp.send(null);

             

    }
      

  5.   

    也许大家还没理解我的意思.....var xmlhttp;
    var lrchtml='';function readlrc(){

    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        xmlhttp.open("GET", "aaa.asp?url=http://xxx.xxx.xxx.xxx:xxx/lrc/10566/1.lrc", true);  
        xmlhttp.onreadystatechange = function fnRun(){
    if((xmlhttp.readyState == 4) && (xmlhttp.status == 200)){
    lrchtml = '我给它赋值了';
                                alert(lrchtml);   //能打印出值?????
    }
    }  
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xmlhttp.send(null);

    }alert(lrchtml); //为什么这里打印不出值?????
      

  6.   

    也许大家还没理解我的意思.....var xmlhttp;
    var lrchtml='';  //全局变量function readlrc(){

    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        xmlhttp.open("GET", "aaa.asp?url=http://xxx.xxx.xxx.xxx:xxx/lrc/10566/1.lrc", true);  
        xmlhttp.onreadystatechange = function fnRun(){
    if((xmlhttp.readyState == 4) && (xmlhttp.status == 200)){
    lrchtml = '我给它赋值了';  //给全局变量赋值
                                alert(lrchtml);   //能打印出值?????
    }
    }  
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xmlhttp.send(null);

    }readlrc();   //调用函数alert(lrchtml); //为什么这里打印不出值?????
      

  7.   

    把这个   xmlhttp.open("GET", "aaa.asp?url=http://xxx.xxx.xxx.xxx:xxx/lrc/10566/1.lrc", true); 
    改成异步的  xmlhttp.open("GET", "aaa.asp?url=http://xxx.xxx.xxx.xxx:xxx/lrc/10566/1.lrc", false); 
      

  8.   

    其实你没有明白我说的意思var xmlhttp;
    var lrchtml='';  //全局变量function readlrc(){

    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        xmlhttp.open("GET", "aaa.asp?url=http://xxx.xxx.xxx.xxx:xxx/lrc/10566/1.lrc", true);  
        xmlhttp.onreadystatechange = function fnRun(){
    if((xmlhttp.readyState == 4) && (xmlhttp.status == 200)){
    lrchtml = '我给它赋值了';  //给全局变量赋值
                                alert(lrchtml);   //能打印出值?????
    }
    }  
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xmlhttp.send(null);

    }readlrc();   //调用函数alert(lrchtml); //为什么这里打印不出值?????
    你调用了readlrc()函数
    但是调用了readlrc函数并不等于你就调用了onreadystatechange = function fnRun() 函数
    如果你没有调用fnRun函数,那么你的全局变量的值还是你初始的时候的值""
    所以你可以这样试试
    readlrc();
    if((xmlhttp.readyState == 4) && (xmlhttp.status == 200)){
       alert(lrchtml); 
    }else{
       alert("status not change");
    }这样同样可以说明你想知道的问题
    因为xmlhttp也是全局变量,他的值在你调用readlrc的时候变了
    你在函数readlrc之外可以取到他的值。
      

  9.   

    问题已解决非常感觉大家,特别感谢(hij333)!
      

  10.   

    把这个   xmlhttp.open("GET", "aaa.asp?url=http://xxx.xxx.xxx.xxx:xxx/lrc/10566/1.lrc", true); 
    改成异步的  xmlhttp.open("GET", "aaa.asp?url=http://xxx.xxx.xxx.xxx:xxx/lrc/10566/1.lrc", false); 你把true改成false之后就是用同步的方式来发送请求了,还需要用ajax来处理么?
    默认是true,也就是异步的方式发送...