onreadystatechange指定函数或者代码是异步进行调用的,而rsText变量实际上是局部变量,你可以这样试一下:
一种方式:将rsText变量放到sendXML函数的外面。
另外一种方式:在异步方法中定义一个新变量:
  rsText_new = xmlobj.responseText;//这种办法也测试过,效果一样
  然后在 xmlobj.send(null);之后调用 alert(rsText_new);//

解决方案 »

  1.   

    楼上的两种办法都测试了一下,都是出现一样的症状:第一次alert的结果是正确的,第二次alert就提示变量未定义。
      

  2.   

    xmlobj.onreadystatechange是一个属性,指出xmlhttp对象的状态改变时要执行的函数,第一次执行sendXML(url,xml)时,nreadystatechange被赋直后,由于只异步执行,继续执行下去到你的第二个alert(rsText),然后返回return rsText,当然没有取得值.
    想达到你的效果,必须让xmlhttp同步执行,就是改xmlobj.open("post",subURL, true); 为xmlobj.open("post",subURL, false); 这样就可以了,但是你应该做一下异常处理,防止出错时仍然返回rsText.
      

  3.   

    请iamybj到
    http://forum.csdn.net/PointForum/Manage/TopicManageView.aspx?forumID=d9b0dee7-e33f-4168-b14c-cc4940c76461&topicID=1642fbf3-169d-4aaa-ad65-5ceb357bd0f8&date=2007-10-21+10%3a44%3a35
    报道一下,我在这个帖子上下的分多,谢谢!
      

  4.   

    发错了,应该是
    http://topic.csdn.net/u/20071021/10/1642fbf3-169d-4aaa-ad65-5ceb357bd0f8.html