日期:2014-05-16  浏览次数:20452 次

js在ajax提交时不会等待返回值
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提交后它并不会保证接受到返回值才执行下面的方法体,因为你返回值是不确定何时返回的。所以执行变相解决问题了。