Недавно я разрабатывал серверную программу с использованием ajax и обнаружил, что браузер IE не поддерживает объект xmlhttprequest, а элемент управления Microsoft.XMLHTTP не найден.
Возникает проблема, которую нам необходимо решить. Решение следующее:
1. Запускаем regsvr32 msxml3.dll;
2. Использовать готовые фреймворки для работы ajax;
3. Оптимизация кода:
if(window.ActiveXObject)
{
xmlHttp = новый ActiveXObject("Microsoft.XMLHTTP");
}
иначе, если (window.XMLHttpRequest)
{
xmlHttp = новый XMLHttpRequest();
}
Если (handle_s == ноль)
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);
вар is_safari = (agt.indexOf("safari")!= -1);
функция CreateXmlHttpReq(обработчик) {
вар xmlhttp = null;
если (is_ie) {
// Гарантированно будет ie5 или ie6
var control = (is_ie5) ? "Microsoft.XMLHTTP": "Msxml2.XMLHTTP"
;
xmlhttp = новый ActiveXObject (управление);
xmlhttp.onreadystatechange = обработчик;
} поймать (бывший) {
// TODO: лучшее справочное сообщение
alert("Вам необходимо включить активные сценарии и элементы управления ActiveX");
}
} else {
// Mozilla
xmlhttp = новый XMLHttpRequest();
xmlhttp.onload = обработчик;
xmlhttp.onerror = обработчик
}
вернуть xmlhttp;
}
или
<script Language="javascript">
вар http_request = ложь;
function send_request(url) {//Инициализация, назначенная функция обработки, функция отправки запроса
http_request = ложь;
//Начинаем инициализацию объекта XMLHttpRequest
if(window.XMLHttpRequest) { //Браузер Mozilla
http_request = новый XMLHttpRequest();
if (http_request.overrideMimeType) {//Установить категорию MiME
http_request.overrideMimeType('текст/xml');
}
}
else if (window.ActiveXObject) { // браузер IE
пытаться {
http_request = новый ActiveXObject("Msxml2.XMLHTTP");
} поймать (е) {
пытаться {
http_request = новый ActiveXObject("Microsoft.XMLHTTP");
} поймать (е) {}
}
}
if (!http_request) { //Исключение, не удалось создать экземпляр объекта
window.alert("Невозможно создать экземпляр объекта XMLHttpRequest.");
вернуть ложь;
}
http_request.onreadystatechange =processRequest;
// Определяем метод и URL отправки запроса и нужно ли синхронно выполнять следующий код
http_request.open("GET", URL, правда);
http_request.send(ноль);
}
// Функция, обрабатывающая возвращаемую информацию
функция ProcessRequest() {
if (http_request.readyState == 4) { // Определяем статус объекта
if (http_request.status == 200) { //Информация успешно возвращена, начинаем обработку информации
вар returnObj = http_request.responseXML;
вар xmlobj = http_request.responseXML;
var сотрудники = xmlobj.getElementsByTagName("сотрудник");
вар обратная связьStr = "";
for(var i=0;i<employees.length;i++) { // Цикл для чтения содержимого jobs.xml
вар сотрудник = сотрудники [я];
FeedbackStr += "Сотрудник:" + сотрудник.getAttribute("name");//Получаем указанный атрибут метки
FeedbackStr += "Position:" + сотрудник.getElementsByTagName("job")[0].firstChild.data;//Получаем первые данные указанного тега
FeedbackStr += "Зарплата:" + сотрудник.getElementsByTagName("зарплата")[0].firstChild.data;
FeedbackStr += "rn";
}
оповещение (обратная связьStr);
} else { // Страница ненормальная
alert("На запрошенной вами странице есть исключение.");
}
}
}
</скрипт>
http://www.cnblogs.com/skylaugh/archive/2006/11/20/566164.html