Baru-baru ini saya sedang mengembangkan program server menggunakan ajax dan menemukan bahwa browser IE tidak mendukung objek xmlhttprequest dan kontrol Microsoft.XMLHTTP tidak dapat ditemukan.
Muncul masalah yang perlu kita selesaikan. Solusinya adalah sebagai berikut:
1. Jalankan regsvr32 msxml3.dll;
2. Gunakan kerangka kerja yang sudah jadi untuk melakukan ajax;
3. Optimasi kode:
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
lain jika(window.XMLHttpRequest)
{
xmlHttp = XMLHttpRequest baru();
}
jika(pegangan_s == nol)
handle_s = "bin/normal.py/db";
this.xmlHttp.onreadystatechange = handle_l;
this.xmlHttp.open("GET",handle_s,true);
this.xmlHttp.send(null);
atau tentukan browser
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);
fungsi CreateXmlHttpReq(handler) {
var xmlhttp = null;
jika (adalah_ie) {
// Dijamin ie5 atau ie6
var kontrol = (is_ie5) ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"
;
xmlhttp = ActiveXObject baru(kontrol);
xmlhttp.onreadystatechange = pengendali;
} tangkapan (misal) {
// TODO: pesan bantuan yang lebih baik
alert("Anda harus mengaktifkan skrip aktif dan kontrol activeX");
}
} lain {
// Mozilla
xmlhttp = XMLHttpRequest baru();
xmlhttp.onload = pengendali;
xmlhttp.onerror = pengendali;
}
kembalikan xmlhttp;
}
atau
var http_request = salah;
function send_request(url) {//Inisialisasi, fungsi pemrosesan yang ditunjuk, fungsi untuk mengirim permintaan
http_permintaan = salah;
//Mulai inisialisasi objek XMLHttpRequest
if(window.XMLHttpRequest) {//Browser Mozilla
http_request = XMLHttpRequest baru();
if (http_request.overrideMimeType) {//Tetapkan kategori MiME
http_request.overrideMimeType('teks/xml');
}
}
else if (window.ActiveXObject) {// YAITU browser
mencoba {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} tangkapan (e) {
mencoba {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} tangkapan (e) {}
}
}
if (!http_request) {/ //Pengecualian, gagal membuat instance objek
window.alert("Tidak dapat membuat instance objek XMLHttpRequest.");
kembali salah;
}
http_request.onreadystatechange = prosesPermintaan;
// Tentukan metode dan URL pengiriman permintaan dan apakah akan mengeksekusi kode berikutnya secara sinkron
http_request.open("GET", url, benar);
http_request.send(null);
}
// Fungsi yang menangani informasi yang dikembalikan
fungsi prosesPermintaan() {
if (http_request.readyState == 4) {// Menentukan status objek
if (http_request.status == 200) {//Informasi telah berhasil dikembalikan, mulailah memproses informasi tersebut
var returnObj = http_request.responseXML;
var xmlobj = http_request.responseXML;
var karyawan = xmlobj.getElementsByTagName("karyawan");
var feedbackStr = "";
for(var i=0;i
feedbackStr += "Karyawan:" + karyawan.getAttribute("nama");//Dapatkan atribut label yang ditentukan
feedbackStr += "Posisi:" + karyawan.getElementsByTagName("pekerjaan")[0].firstChild.data;//Dapatkan data pertama dari tag yang ditentukan
feedbackStr += "Gaji:" + karyawan.getElementsByTagName("gaji")[0].firstChild.data;
feedbackStr += "rn";
}
peringatan(umpan balikStr);
} else { //Halaman tidak normal
alert("Ada pengecualian pada halaman yang Anda minta.");
}
}
}
http://www.cnblogs.com/skylaugh/archive/2006/11/20/566164.html