正しい方法で正しいxmlhttprequestオブジェクトを作成する


まずxmlhttprequestバージョンの問題についてお話ししますが、IE 7以上では、すべての非IEブラウザでオリジナルのxmlhttprequestオブジェクトがサポートされており、new XMLHttpRequest()を書くだけです.問題は主にIE 6です.IE 6はActiveXで呼び出されたMSXML解析器です.MSXMLのバージョンはもっと注意してください.MSXMLは1.0から現在の6.0まで6つの大きなバージョンをリリースしています.一般的にバージョンが高いほどいいです.高いバージョンはより速い性能、互換性、より少ないバグなどを持っています.1.10のリリース日はWidnows 95よりも早く、2.0はWindows 98とIE 5の中で、Windows 2000は2.5です.Windows 2000 SP 4、Windows XP以上のデフォルトはMSXML 3、Windows Vista、Windows 7はMSXML 6をサポートしており、これはオペレーティングシステムとブラウザが持参したバージョンが更新によって最新バージョンをインストールできるということであり、自動更新がオンであれば.IE 6 xmlhttprequestを作成するには、new ActiveXObject(「Microsoft.XMLHTTP」)の2つの方法があります.およびnew ActiveXObject(「Msxml 2.XMLHTTP」);1つ目の方法は、実際にはMSXML 2を作成することである.0バージョンのxmlhttp、2つ目は3.0以上のxmlhttpを作成する.私の案は
 
var xmlHttp;
function createXMLHttpRequest()
{
	var xmlhttp;
	if (window.XMLHttpRequest)
	{// code for all new browsers
	  xmlhttp=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{// code for IE5 and IE6
	    var aVersions = ['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
	    for(var i=0; i<aVersions.length; i++)
	    	xmlhttp = new ActiveXObject(aVersions[i]);
	}
	if (xmlhttp!=null)
	{
		return xmlhttp;
	}
	else
	{
	  alert("         XMLHTTP.");
	}
}

function queryCity(id)
{
	xmlHttp=createXMLHttpRequest();
	type="city";
	var url="getcity.php?action=city&id="+id;
	xmlHttp.open("GET",url,true);
	xmlHttp.onreadystatechange=statechange;
	xmlHttp.send('');

}
	
function queryCountry(id){
	xmlHttp=createXMLHttpRequest();
	type="country";
	var url="getcity.php?action=area&id="+id;
	xmlHttp.open("GET",url,true);
	xmlHttp.onreadystatechange=statechange;
	xmlHttp.send('');

}
	
function statechange()
{
	if(xmlHttp.readyState==4&&xmlHttp.status==200)
	{
			if(type=="city")
			{
				showCity();
			}
			else if(type="country")
			{
				showCountry();
			}
		
	}
}

ajaxは間違いやすいところが多く、チェックしにくいです
1,XMLHttpRequest,onreadystatechange,readyState,statusなどのキーワードの大文字と小文字は必ず正しく、IE上では大きさがあまり敏感ではなく、FireFoxではだめです
2,この3つの文の順序は間違いなく、NO者IEの下で1回しか実行できない場合があります

	xmlHttp.open("GET",url,true);
	xmlHttp.onreadystatechange=statechange;
	xmlHttp.send('');


3、リクエストごとにxmlhttpオブジェクトを再インスタンス化します.いいえ、1回しか実行できない場合があります.