ajax异步请求导致的问题

做的功能需要到后台进行日期校验,然后我发起了ajax请求

function checkDate_effectiveDate(){
	var startDate = new Date($('#feeParaInfoChgZYNJPlanInfo_feeRateStartDate').datebox('getValue'));
	flag_ = "N";
	$.ajax({
		url : '../../public.asp',
		type : 'post',
		data : {
			funcId : "checkDate_effectiveDate",
			planCode : $('#planCode').val(),
			startDate : startDate.toLocaleString()
		},
		dataType:'json',
		success : function (data){
			console.log(data)
			if(data[0].flag == 'Y'){
				flag_ = "Y";
			}
		}
	});
	if (flag_ == "Y"){
		return false;
	}
	return true;
}

请求的返回结果是正常的,通过打印返回结果可以发现data[0].flag就是Y,但就是不进if(data[0].flag == 'Y')这个判断,导致不执行flag_ = "Y",然后无论怎样返回都是true。
然后我在这两个位置分别打了断点

调试时发现程序是先走到了第二个断点的位置,这时才意识到ajax的异步问题。
也就是说,在ajax去请求的同时已经开始走下面的语句了,也就是这儿

在这个方法的最开始已经把flag_赋值为N,在进入这个if (flag_ == "Y")判断时,ajax还没有执行完,所以没有给flag_重新赋值,所以一直都是返回true。
发现了这个问题之后把ajax的异步设为false就可以解决了, 让它同步执行。

posted @   程长新  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示