正しい方法で正しい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を作成する.私の案は
ajaxは間違いやすいところが多く、チェックしにくいです
1,XMLHttpRequest,onreadystatechange,readyState,statusなどのキーワードの大文字と小文字は必ず正しく、IE上では大きさがあまり敏感ではなく、FireFoxではだめです
2,この3つの文の順序は間違いなく、NO者IEの下で1回しか実行できない場合があります
3、リクエストごとにxmlhttpオブジェクトを再インスタンス化します.いいえ、1回しか実行できない場合があります.
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回しか実行できない場合があります.