本帖最后由 dschencds 于 2014-09-05 12:48:12 编辑

解决方案 »

  1.   

    起过局部变量试试,$.ajax方法回调完后,其回调参数生命周期也就Over了。function getCity(){
    //var parentCode=provinceCode;
    var parentCode="440000";
    var url = "${contextPath}<eoms:constant fieldName='QUERY_BAS_CODE_QUERY_CITY_URL' shortClassName='Url'></eoms:constant>";
    var y=0;
    var str1='';
    $.ajax( {
          type:"post",
          url : url+".json",
          dataType : "json",
          data:{"parentCode":parentCode},
          success:function(date) {
           var cityList=date.cityList;
           $(cityList).each(function(){
          str+='<input name="" type="checkbox" value="'+this.CODE+'">'+this.NAME+'';
           });
           alert("1:"+str);
                      str1 = str;
          }
        });
      alert("2:"+str1);
    return str1;
    }
      

  2.   

    你初始化var str=' ';的时候,写str='a'做个测试,是不是执行后的结果为:在1 alert的时候是有值的,在2alert的时候则显示为a。
    如果是,就说明,ajax里赋值不是上面声明的那个str,ajax也属于一个方法,getCity是一个人方法,一个方法给另一个方法里的属性赋值是不行的。因为javascript是弱类型语言
    $(cityList).each(function(){
                     str+='<input name="" type="checkbox" value="'+this.CODE+'">'+this.NAME+'';
                  });
    这里的str虽然没有写var ,但是实际上已经声明了,这个str是ajax里的局部变量,与外面那个str不是一个东西
      

  3.   

    function getCity(){
        //var parentCode=provinceCode;
        var    parentCode="440000";
        var url = "${contextPath}<eoms:constant fieldName='QUERY_BAS_CODE_QUERY_CITY_URL' shortClassName='Url'></eoms:constant>";
        var y=0;
        var str='';
        $.ajax( {
              type:"post",
              url : url+".json",
              dataType : "json",
              async:false, //你在这里加上这么一句
              data:{"parentCode":parentCode},
              success:function(date) {
                  var cityList=date.cityList;
                  $(cityList).each(function(){
                     str+='<input name="" type="checkbox" value="'+this.CODE+'">'+this.NAME+'';
                  });
                  alert("1:"+str);
              }
        });
          alert("2:"+str);
        return str;
    }
      

  4.   

    jQuery发送$.ajax请求
    其属性:async
    值:true;发送的请求时异步请求,缺省值为true;
    值:false,发送同步请求,会先执行完success回调方法里面之后才会执行下面的操作。
    这个就应该能解决你的问题了,试试。
      

  5.   

     async:false, 同步请求即可