haimi 发表于 2011-12-29 13:06:06

莫名其妙!javascript函数运行时值返回异常

本帖最后由 haimi 于 2011-12-29 13:14 编辑

恳请大家指点!代码如下:

function geteachweb(ter_id,whom){
   var kc_id=$("#kc_id").val();
   var weboption="<option value=\"0\">请选择</option>";(初始化值)
   $.ajax({
         type: "POST",
         url: "/index.php/adc_teach/geteachweb",
         data:{
            "ter_id":ter_id,
            "kc_id":kc_id,
            "whom":whom
         },
         dataType: "json",
         success: function(data){
            if (data!=false){
               for(i=0;i<data.length;i++){
                  weboption+='<option value=\"'+data.web_id+'\">'+data.web_title+'</option>';
               }
            }
         }//endsuccess
      }); //endajax
return weboption;(断点1)
}



现在的情况是:jquery1.44和1.64都尝试了
1、其他函数调用此函数时ajax返回值完全正常
2、但得到的weboption值是定义的初始化值
3、如用firebug调试时在断点1处设置断点,程序运行至断点再点击继续,则weboption为正确值!
本人对此百思不得其解!
请大家帮忙分析,谢谢!!!




huboo82 发表于 2011-12-29 13:23:39

ajax是异步的,所以他会整个都执行掉,然后有ajax请求的再去发请求,所以直接就返回了初始值,你断点的话,ajax的就在这段时间执行了。所以你的return要放在success里完成处理以后就return。

huboo82 发表于 2011-12-29 13:25:20

但如果你还就想要这样写的话,在ajax里加个属性
async: false

haimi 发表于 2011-12-29 14:28:09

感谢楼上,确实如此
页: [1]
查看完整版本: 莫名其妙!javascript函数运行时值返回异常