要么在ajax的onreadystatechange事件函数中处理你的逻辑,要么把ajax改为同步。

解决方案 »

  1.   

    在GetChildClassStr这个涵数中定义一个局部变量
    我大概写一个伪代码
    function GetChildClassStr()
    {
    var s="";
    ajax.onreadystatechange = function() {
    //在这里把返回值赋给s,即是把return resultStr;改为s=resultStr;
    }//在ajax请求完成的后的外面。将resultStr返回;即GetChildClassStr()这个涵数的最后一行代码是
    return s;
    }这样你在其他涵数调用GetChildClassStr()就能取到返回值了
      

  2.   

    下面是我自己封装的ajax和部分代码,希望能帮到你 
    Object.prototype.copy=function(extendObj){
    if(!App.isObject(this))throw {message:'对象不支持此属性或方法'};
    if(App.isObject(extendObj))for(var p in extendObj)this[p]=extendObj[p];
    }
    Object.prototype.copyIf=function(extendObj){
    if(!App.isObject(this))throw {message:'对象不支持此属性或方法'};
       if(App.isObject(extendObj))for(var p in extendObj)if(App.isUndefined(this[p]))this[p]=extendObj[p];
    }
    String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,'')};var App={
       _getType:function(v){return Object.prototype.toString.apply(v)},
       getType:function(v){if(v===undefined)return '[object Undefined]';else if(v===null)return '[object Null]';return App._getType(v)},
       isFunction:function(v){return App._getType(v)==='[object Function]'},
       isObject:function(v){return App._getType(v)==='[object Object]'},
       isArray:function(v){return App._getType(v)==='[object Array]'},
       isDate:function(v){return App._getType(v)==='[object Date]'},
       isString:function(v){return App._getType(v)==='[object String]'},
       isBoolean:function(v){return App._getType(v)==='[object Boolean]'},
       isNumber:function(v){return App._getType(v)==='[object Number]'},
       isInt:function(v){return App.isNumber(v) && (v+'').indexOf('.')<0},
       isUndefined:function(v){return v===undefined},
       isNull:function(v){return v===null},
       isBlankString:function(v){return App.isString(v) && v.trim().length==0},
       isNotBlankString:function(v){return App.isString(v) && v.trim().length>0},
       isEmptyObject:function(v){return App.isObject(v) && (function(x){for(var p in x)return false;return true}(v))},
       isNotEmptyObject:function(v){return App.isObject(v) && (function(x){for(var p in x)return true;return false}(v))}
    };var AJAX={};
    AJAX.copy({
        /**
         * 建立一个ajax对象
         */
        createAjax:function(){
            var xmlHttpRequestObj;
            try{
                xmlHttpRequestObj=new XMLHttpRequest();
            }
            catch(e){
                try{
                 xmlHttpRequestObj=new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch(e){
                 try{
                        xmlHttpRequestObj=new ActiveXObject("Microsoft.XMLHTTP");
                    }
                 catch(e){
                     return false;
                    }
                }
            }
            return xmlHttpRequestObj;
        },
    /**
     * 一个ajax的请求操作
     * @param url
     * ajax访问的地址
     * @param params
     * 传递的参数
     * @param callback
     * ajax访问后的回调函数
     * @param submitMode
     * 提交的方式,默认为post
     * @param async
     * 执行ajax的模式,异步或同步,默认为异步,设置async===false表示为同步
     */
        request:function(url,params,callback,submitMode,async){
    var ajax=this.createAjax();
    if(!ajax)return;
    ajax.onreadystatechange=function()//ajax的关键函数,每当发送请求时ajax的状态一改变就执行
    {
                if (ajax.readyState==4 && ajax.status==200)//4表示ajax请求完成,200表示请求得到执行
        {
         if(App.isFunction(callback)){callback(ajax.responseText)}
        }
    }
    /** 
     * 打开请求,第一个参数为请求的方式,包括post和get两种,常用post;
     * 第二个参数为请求的url,前面定义的那个;
     * 第三个参数为ajax是同步调用还是异步调用,同步调用表示本次请求完成后才执行请求后的代码,否则边请求边执行页面的其他程序,ture表示异步
     */
    if(submitMode==='GET' && App.isNotBlankString(params))url+='?'+params;
    ajax.open(submitMode||'POST',url,async!==false);
    //发送请求,参数为字符串,当请求方式为post时有效
    if(submitMode==='GET')ajax.send();
    else{
        ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        ajax.send(params);
    }
            return ajax;
        },
      /**
       * 中断一个ajax
       */
        abort:function(ajax){ajax.abort()}
    });使用示例:主要是AJAX.request方法var request=AJAX.request('xxx.jsp|asp|aspx|php','',function(result){alert(result)});
    //AJAX.abort(request);