проблема AJAX на IE8 - PullRequest
       15

проблема AJAX на IE8

2 голосов
/ 09 февраля 2010

У меня есть старый сайт, который использует документы XML, и когда я его создал, у меня был Firefox и IE7 для тестирования, и он работал просто замечательно. С тех пор появился IE8, и кажется, что сайт больше не работает должным образом. Это текущий код:

if (window.XMLHttpRequest) 
    {
        XMLHttpRequestObject  = new XMLHttpRequest();
        XMLHttpRequestObject.overrideMimeType("text/xml");
        XMLHttpRequestObject.open("GET", "produse.xml", true);
        XMLHttpRequestObject.onreadystatechange = function()
        {   
            if (XMLHttpRequestObject.readyState == 4) 
            {
                xmlDocument = XMLHttpRequestObject.responseXML;
                removeWhitespace(xmlDocument);                                          
            }
        }
    XMLHttpRequestObject.send(null);
    } 
    else if (window.ActiveXObject) 
        {
            xmlDocument= new ActiveXObject("Microsoft.XMLDOM"); 
            xmlDocument.async=false; 
            if (xmlDocument .readyState == 4)
            {
                xmlDocument.load("produse.xml");    
            }
        }

Но я получаю эту ошибку:

Message: Object doesn't support this property or method
Line: 19
Char: 3
Code: 0

что относится к:

XMLHttpRequestObject.overrideMimeType("text/xml");

Что мне вместо этого использовать?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010

Эта страница показывает разницу между firefox / ie / ie8 и содержит несколько примеров того, как это сделать:

http://www.javascriptkit.com/jsref/ajax.shtml

В основном это говорит о том, что IE8 не поддерживает этот метод, и вы должны убедиться, что ваш сервер добавляет правильный заголовок (text / xml) в исходящий ответ.

Он также имеет ссылку на http://www.javascriptkit.com/dhtmltutors/ajaxgetpost3.shtml, которая объясняет распространенные ошибки и проблемы IE.

Там написано: 1011 *

if (mygetrequest.overrideMimeType)
 mygetrequest.overrideMimeType('text/xml')
1 голос
/ 09 февраля 2010

JQuery будет моим выбором.Это намного быстрее и поддерживается кросс-браузерно и в CDN.

Вы можете сократить этот код до нескольких строк.

$.get('ajax/test.html', function(data) {
  $('.result').html(data);
  alert('Load was performed.');
});
...