AJAX请求后页面数据未刷新问题

这段时间因为做毕设,涉及到AJAX的问题比较多,今天的问题就是一个。中所周知,ajax最大的特点就是局部刷新,可以在不更新整个页面的情况下刷新局部数据,但是,有时候这种优点也会成为一种优点,多说无益,直接上图

首先来看未操作之前的页面

之后我要开始添加了,点击按钮  添加美食  会新增一个菜系,菜名为ddd,价格为88,类型为饮料,为突出重点,我就不贴后台代码了,但是我用我50M的大屌保证后台没有任何毛病

上图

为了增加可信性,我们看一下数据库

但是页面上并没有这条数据

前端JS代码如下:

function addDishes(){
				var newDishesName = $("#add_dishesname").val();
				var newDishesPrice = $("#add_price").val();
				var newDishesType = $("#add_type").val();
				if(newDishesName==null || newDishesName==''){
					alert("菜名不能为空")
				}
				if(newDishesPrice==null || newDishesPrice==''){
					alert("价格不能为空")
				}
				if(newDishesType==null || newDishesType==''){
					alert("类型不能为空")
				}
				$.ajax({
					type:"post",
					url:"<%=basePath%>dishes/addDishes.action",
					async:true,
					data : {
						dishesname : newDishesName,
						price : newDishesPrice,
						dishestype : newDishesType
					},
					success : function(re){
						if(re=="YES"){
							alert("添加成功");
							$("#addModal").modal("hide");
							window.location.reload(true);
						}else{
							alert("添加失败");
						}
					},
					error : function(re,jqXHR){
						alert(re+jqXHR.status)
					}
				});
			}
百度了好久,终于知道问题出在了哪,就是那个
async:true,

的问题,原因如下:

扫描二维码关注公众号,回复: 3883291 查看本文章

首先我们要知道AJAX同步和异步到底是怎么一回事,按照我的理解,最直观的体现就是在success上。

当我们设置

async : true

时,假设succes : {

f1();

f2();

}

这两个函数会异步执行,意思就是f1会执行自己的代码,但就在f1执行的过程中,f2也会执行,两者或不影响(没有锁的情况下),就想javaSE里的多线程异步执行一样

但是,当async为false时,两个函数会同步执行,即f1先执行,待f1执行完毕之后f2才开始执行。

这样上面的问题就很好解释了。。。

设置async : false

问题解决。。。吃饭

猜你喜欢

转载自blog.csdn.net/an20150509/article/details/80192970