请教ajax一个奇怪的现像
//------------------ajax部分-----------------
var xmlHttp;
var errorflag=0;
function createXMLHttpRequest(){
	if(window.ActiveXObject){
		 xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest){
		 xmlHttp= new XMLHttpRequest();
	}
}
function sendRequest(url){
	createXMLHttpRequest();
	xmlHttp.onreadystatechange=callBack;
	xmlHttp.open("Get", url, true);
	xmlHttp.send(null);
}
function callBack(){
	if(xmlHttp.readyState==4){
		if(xmlHttp.status==200){
			if(xmlHttp.responseText=="exist"){
				
errorflag=1;
				
			}
			
		}
	}
}
//-------------------------------------
//检证新付款项的提交
function checkform(){
	
alert("send front = "+errorflag);  打印出来的是0
	//未付款编号
	var no = document.getElementById('paymentno').value;
	//本次输入的未付款金额
	var money = document.getElementById('paymoney').value;	
	sendRequest("http://localhost:8080/ContractSys/admin/payAddCheck.do?no="+no);
	
A处: alert("send after= "+errorflag);  打印出来的是0
	if(errorflag==1){
	  
B处  alert("in if = "+errorflag);  打印出来的是1
		errorflag=0;
		alertPayno("对不起,您输入的付款号以经存在!");
		return false;
	}
	//未付款总额
	var unpaidAmount=<s:property value="unpaidAmount"/>;
	//如果未付总额  减去   本次输入额  等于  正数或0则合法
	var result=unpaidAmount-money;
	if(result<0){
		alert("您输入的付款金额有误!本次付款金额超出未付总额!");
		return false;
	}
	return false;
}
------------------------------------------
请只看加粗的部分
有三个问题。
第一个问题:A处打印的是 0,为什么到了下一条语句就errorflag就突然变成1了呢。
第二个问题:ajax返回的是exist,那么应该改变了errorflag的值=1,但是方法出来后的errorflag还是0;
第三个问题:请教,ajax执行的顺序是怎么样的呢?还是我对ajax的执行过程理解有误。
              
------解决方案--------------------ajax是异步的,不会挂起js代码执行,你增加alert语句挂起下面js代码执行,但是ajax还是会继续执行回调设置变量的值,你去掉A处的alert语句肯定不会执行b处的
xmlHttp.open("Get", url, true);
改为
xmlHttp.open("Get", url,
 false);同步执行