0

я использую этот скрипт для того, чтобы прочитать из файла XML и отправить его на страницу asp.net:Различия между браузерами

<script type="text/javascript"> 
    var doc = "Instructions.xml"; 
    var path = "/pages/Support/Word/"; 

    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else {// code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET", path + doc, false); 
    xmlhttp.send(); 
    xmlDoc = xmlhttp.responseXML; 

    document.getElementById("head").innerHTML = 
     xmlDoc.getElementsByTagName("row")[0].childNodes[0].nodeValue; 
    document.getElementById("text").innerHTML += 
     xmlDoc.getElementsByTagName("line")[0].childNodes[0].nodeValue 
</script> 

Этот сценарий отлично работает в браузере Google Chrome и Safari; но в IE7 и Mozilla просто не работает ... просто так.
Кто-нибудь знает, почему это происходит и дает большую помощь?

ДОПОЛНИТЕЛЬНОЕ UPDATE

Ну я пытался много раз и, глядя на отладчике я видел только одна проблема появляется.
Когда программа доходит до линии
document.getElementById("head").innerHTML = xmlDoc.getElementsByTagName("text")[0].childNodes[0].nodeValue;
затем бросить мне ошибку JavaScript runtime error: Unable to get property 'childNodes' of undefined or null reference Если это воля помогает

ответ

0

Наконец-то ... И после того, как вы занялись серфингом в сети ... Я обнаружил проблему этой проблемы. В моем файле .xml я имею следующую структуру:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/3/main"> 
    <w:row> 
    <w:text> 
      <w:line> 

     </w:line> 
    </w:text> 
</w:row> 
</w:document> 

Google и Safari понимает node name как line но другие браузеры не делают. Таким образом, я меняю node name и делаю это <text> или <line>, а затем все браузеры понимают ту же проблему.
Но у меня такое ощущение, что это очень провокационное поведение с сайта Internet Explorer и Mozilla.

0

Этот пост должен ответить вам вопрос: Easiest way to retrieve cross-browser XmlHttpRequest

Это объясняет, как перебирать различные решения до тех пор, пока не найдет тот, который подходит к рассматриваемому браузеру.

Вы вставляете код из ответа 1 в тег скрипта (существующий или новый).

Чтобы получить/отправить сообщение, вы должны использовать функцию sendRequest(url,callback,postData), указанную в ссылке. Он имеет 3 параметра: строку для url, функцию обратного вызова, при которой запрос будет выполнять обратный вызов, а last - логический (true или false), чтобы указать, должна ли функция использовать POST (true) или GET (false). В вашем случае это будет GET. Не забудьте реализовать способ обработки ошибок, если что-то пойдет не так (комментарий в коде)

Подводя итог, было бы что-то вроде этого (не забудьте добавить код (1. ответ) в ссылку):

<script type="text/javascript"> 
    function performAction() 
    { 
     var doc = "Instructions.xml"; 
     var path = "/pages/Support/Word/"; 

     sendRequest(path + doc, requestCallback, false); 
    } 

    function requestCallback(xmlHttp) 
    { 
     var xmlDoc = xmlHttp.responseXML; 

     document.getElementById("head").innerHTML = xmlDoc.getElementsByTagName("row")[0].childNodes[0].nodeValue; 
     document.getElementById("text").innerHTML += xmlDoc.getElementsByTagName("line")[0].childNodes[0].nodeValue; 
    } 
</script> 
+0

Большое спасибо за вашу помощь, но только потому, что я незнаком с javascript. Я не знаю, как я его применим, в сочетании со сценарием, который у меня есть ... вы можете мне помочь? –

+0

Если вы считаете, что мой текущий ответ удовлетворительный, пожалуйста, примите его, нажав галочку. – Highace2

+0

Я действительно не знаю, решает ли этот ответ ваш вопрос, и это потому, что я не знаком с JavaScript и не знаю, как реализовать его в моем коде. Я мог бы сказать «да», только если бы увидел результаты. –

Смежные вопросы