最近、ajax を使用してサーバー プログラムを開発していましたが、IE ブラウザが xmlhttprequest オブジェクトをサポートしておらず、Microsoft.XMLHTTP コントロールが見つからないことがわかりました。
解決する必要がある問題が発生しました。解決策は次のとおりです。
1. regsvr32 msxml3.dll を実行します。
2. 既製のフレームワークを使用して ajax を実行します。
3. コードの最適化:
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = 新しい XMLHttpRequest();
if
(handle_s == null)
handle_s = "bin/normal.py/db";
this.xmlHttp.onreadystatechange = handle_l;
this.xmlHttp.open("GET",handle_s,true);
this.xmlHttp.send(null);
またはブラウザ
var agt = navigator.userAgent.toLowerCase();
を決定します。
var is_ie = (agt.indexOf("msie") != -1);
var is_ie5 = (agt.indexOf("msie 5") != -1);
var is_opera = (agt.indexOf("opera") != -1);
var is_mac = (agt.indexOf("mac") != -1);
var is_gecko = (agt.indexOf("gecko") != -1);
var is_safari = (agt.indexOf("safari") != -1);
関数 CreateXmlHttpReq(handler) {
var xmlhttp = null;
if (is_ie) {
// ie5 または ie6 であることが保証されます
var control = (is_ie5) : "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"
;
xmlhttp = 新しい ActiveXObject(コントロール);
xmlhttp.onreadystatechange = ハンドラー;
} キャッチ (例) {
// TODO: ヘルプ メッセージの改善
alert("アクティブ スクリプトと activeX コントロールを有効にする必要があります");
}
} else {
// モジラ
xmlhttp = 新しい XMLHttpRequest();
xmlhttp.onload = ハンドラー;
xmlhttp.onerror = ハンドラー
}
xmlhttp を返します。
}
または
<script language="javascript">
var http_request = false;
function send_request(url) {//初期化、指定処理関数、リクエスト送信関数
http_request = false;
// XMLHttpRequest オブジェクトの初期化を開始します
if(window.XMLHttpRequest) { //Mozilla ブラウザ
http_request = 新しい XMLHttpRequest();
if (http_request.overrideMimeType) {//MiME カテゴリを設定します
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE ブラウザ
試す {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} キャッチ (e) {
試す {
http_request = 新しい ActiveXObject("Microsoft.XMLHTTP");
} キャッチ (e) {}
}
}
if (!http_request) { //例外、オブジェクト インスタンスの作成に失敗しました
window.alert("XMLHttpRequest オブジェクト インスタンスを作成できません。");
false を返します。
}
http_request.onreadystatechange = processRequest;
// リクエストの送信方法と URL、および次のコードを同期的に実行するかどうかを決定します
http_request.open("GET", url, true);
http_request.send(null);
}
// 返された情報を処理する関数
関数 processRequest() {
if (http_request.readyState == 4) { // オブジェクトのステータスを決定する
if (http_request.status == 200) { //情報が正常に返されたので、情報の処理を開始します
var returnObj = http_request.responseXML;
var xmlobj = http_request.responseXML;
var 従業員 = xmlobj.getElementsByTagName("従業員");
var FacebookStr = "";
for(var i=0;i<employees.length;i++) { // ループしてemployees.xmlの内容を読み取ります。
var 従業員 = 従業員[i];
feededStr += "Employee:" +employee.getAttribute("name");//ラベルの指定された属性を取得する
フィードバックStr += "Position:" +employee.getElementsByTagName("job")[0].firstChild.data;//指定されたタグの最初のデータを取得する
フィードバックStr += "給与:" +従業員.getElementsByTagName("給与")[0].firstChild.data;
feedStr += "rn";
}
アラート(フィードバックStr);
} else { //ページが異常です
alert("リクエストしたページに例外があります。");
}
}
}
</script>
http://www.cnblogs.com/skyLaugh/archive/2006/11/20/566164.html