function validataUnFinish(){ var t = ""; var t1 = ""; $(":checkbox[name='roomIndexId'][checked]").each(function(i){ t = t+$(this).attr("value")+","; }); if(t!=""){ alert("进入ajax内部"); $.post("ajaxValidateUnFinish",{"indexRoomIndexs":t},function(data){ if(data!=null&&""!=data){ t1 = data; alert(data+"????"+t1); } }); } alert("ccc"); if(t1!="") return false; return true; }
?如代码所示,我的目的是找出多选按钮,然后活得里面的值,传到后台。后台根据传过来的值来判断是否符合条件并返回结果。开始以为js是从上到下执行,所以会先执行回调方法。然后在执行alert("ccc")。后来尝试发现总是先alert("ccc"),然后在不定时alert回调函数返回的数据。想了想,其实js是单线程的,在执行ajax提交后它并不会保证接受到返回值才执行下面的方法体,因为你返回值是不确定何时返回的。所以执行变相解决问题了。