Ajax异步/同步执行的问题

关于ajax的异步与同步执行,在于关键词,async:true/false默认为true,异步执行。

false代表同步执行,即执行该ajax请求时,其余js代码被锁定,不能执行。等到ajax执行完毕后继续执行。

function addApar() {
	var managerId = 10;
	console.log($("#managerName").val());
	$.ajax({
		type : "POST",
		url : "/gradPro/apar/getManId.action",
		cache : false,
		async : true,
		datatype : "json",
		data : {
			"managerName" : $("#managerName").val(),
		},
		success : function(result) {
			managerId = result;
		}
	});
	console.log(managerId);
}

如此段代码,声明了异步执行为true。

springmvc中代码块如下: 注意 springmvc中用@RequestParam声明接受过来的单个参数,@PathVariable声明为URL即@RequestMapping中url的占位变量。如value="{who}/getManId.action"。可用变量声明占据url同时也是RESTFUL风格的URL初现。@RequestBody接受json字符串。ajax请求往往传的是json对象,应用data : JSON.stringify(javascript对象),将json对象转换成json字符串后传输。同时声明dataType:"json",contentType:"application/json",type:"post"设置请求头信息。

/**
	 * 拿到管理员ID
	 * 
	 * @param managerName
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "getManId.action", method = RequestMethod.POST)
	public int getManagerId(@RequestParam("managerName") String managerName) {
		int data = apartmentService.getManagerId(managerName);
		return data;
	}

执行如下所示:

执行到ajax请求时 后台debug未能进入断点(110行)中。


ajax请求执行完成后,eclipse才响应进入断点(其实多次测试后发现是随机的。有可能也立即响应),但此次将返回值存入上级函数变量中失败。


下面试试同步执行的结果:如图async改为false。


刷新页面,如过js未刷新,可尝试Ctrl+f5。实在不行清除浏览器缓存。

如图 JS文件已刷新。


执行到ajax请求时。js代码被锁定。后台debug响应。


数据取出成功后装入函数变量managerId



完。注:这个请勿和ajax跨域混淆概念(暂未详细了解)。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值