小弟也是新手 请 各位 给个详细的解释 关于函数的返回值
另外给个代码 比如下面的msg我想产生一个返回值 然后到另一个函数里边使用 怎么才能做到
function chkLog(url,postStr){
 var ajax;
 ajax = XmlHttp.mf_createxmlhttp(); //创建AJAX引擎
 ajax.open("POST",url,true);
 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
 ajax.send(postStr);
 ajax.onreadystatechange=function() {
  if(ajax.readyState == 4 && ajax.status == 200)
  {
  var  msg = ajax.responseText;
  }
 }
}

解决方案 »

  1.   

    做不到,因为AJAX是异步操作,意思就是说调用的时候会立即返回。等服务器端响应回来的时候再调用回调函数,也就是你的onreadystatechange那个函数。有点多线程的意思(虽然不是)。所以你是没有办法从这里得到返回值的。
    异步是为了更高的效率和更好的用户体验,但是编写异步程序的时候一定要换换你的思维方式,它不和普通程序一样是一条路走下来的,而是有点跳跃式的感觉,不知道这么说你明不明白。一般来说把得到结果之后要做的事情扔到onreadystatechange那个函数里面就可以了。
      

  2.   

    function chkLog(url,postStr){
     var ajax;
     ajax = XmlHttp.mf_createxmlhttp(); //创建AJAX引擎
     ajax.open("POST",url,true);
     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
     ajax.send(postStr);
     ajax.onreadystatechange=function() {
      if(ajax.readyState == 4 && ajax.status == 200)
      {
      var msg = ajax.responseText;
         yourfunc(msg);//直接调用你的函数
      }
     }
    }
      

  3.   

    var msg = "";//可以作为全局变量,在任何地方都可以使用
    function chkLog(url,postStr){
     var ajax;
     ajax = XmlHttp.mf_createxmlhttp(); //创建AJAX引擎
     ajax.open("POST",url,true);
     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
     ajax.send(postStr);
     ajax.onreadystatechange=function() {
      if(ajax.readyState == 4 && ajax.status == 200)
      {
      msg = ajax.responseText;
      }
     }
    }
      

  4.   

    用全局变量,你不知道他什么时候会被赋值,难道用 setTimeout 不停去判断??
      

  5.   

    你想直接取值 把异步关掉就好了
    ajax.open('POST',url,false);直接return