我在进行模糊查询的时候,若在setTimeout("bdSearch()",100);前加一个alert(),就能出现期望结果,不加就不会出来,大家看看这是怎么回事啊?
function onLoadInpDiagAdd(){
document.all.inpDiagEditTd.innerHTML=Haitai.Ajax.request({url:"do?module=report&action=InpDiag&method=addInpDiag&diagTypeCode="+<%=diagTypeCode%>,
form:inDiagForm,
callback:function(text){document.all.inpDiagEditTd.innerHTML=text;}});
setTimeout("bdSearch()",100);
}
onLoadInpDiagAdd();function bdSearch(){
}

解决方案 »

  1.   

    其中 bdSearch()是模糊查询方法
      

  2.   

    后来我又改成self.setInterval("bdSearch()",100);发现执行起来很慢,搞不清是什么原因?
      

  3.   

    function bdSearch(){
    }把这个函数放在前面,先加载他
      

  4.   

    看代码是没问题的,即使Ajax时间再短也没关系,因为它JS有一个机制会预编译函数与变量。
    所以楼主最好是看通过console.log的方式看下是什么问题导致没执行
      

  5.   

    我想我知道楼主的错误了,楼主本身执行bdSearch这个方法是没问题的,问题出在你是AJAX(异步的)请求,你并不是在回调函数里执行这个方法,
    也就是说你的代码,当你在执行bdSearch方法的时候ajax请求还没完毕,那么你后台数据都没请求下来就执行这个模糊查询,自然是没效果的了。
    所以当你在这个代码之前alert()一下等于间接延长了执行bdSearch的时间,这时候ajax请求已经请求下来了数据。所以你这个代码只需要吧function onLoadInpDiagAdd(){
    document.all.inpDiagEditTd.innerHTML=Haitai.Ajax.request({
        url:"do?module=report&action=InpDiag&method=addInpDiag&diagTypeCode="+<%=diagTypeCode%>,
        form:inDiagForm,
        callback:function(text){
               document.all.inpDiagEditTd.innerHTML=text;
               bdSearch()
            }
         });
    }
    onLoadInpDiagAdd();function bdSearch(){
    }
      

  6.   

    回晚了,楼上的yibey,我按照你的方法,果然可以,非常的感谢!