не работает метод load(); в DOM
Всем привет, захотел с помощью DOM взять данные из XML и передать их на HTML страницу, данный метод сработал в Мозиле и IE, и не сработал в Хроме и Опере.
XML файл (1.xml): <?xml version="1.0" encoding="utf-8"?> <bulletinboard> <article> <title>FFFFFF</title> <detail>DDDDD</detail> <date>IIIIII</date> </article> </bulletinboard> HTML страница c DOM (2.html): <html> <head> <meta charset="utf-8"/> </head> <body> <script type="text/javascript"> function loadXMLDoc(dname) { try { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } catch(e) { try { xmlDoc=document.implementation.createDocument("","",null); } catch(e) {alert(e.message)} } try {xmlDoc xmlDoc.async=false; xmlDoc.load(dname); return(xmlDoc); } catch(e) {alert(e.message)} return(null); } xmlDoc=loadXMLDoc("./1.xml"); var x=xmlDoc.getElementsByTagName("title"); var y=xmlDoc.getElementsByTagName("detail"); var z=xmlDoc.getElementsByTagName("date"); for (i=0;i<x.length;i++) { document.write(x[i].childNodes[0].nodeValue); document.write(y[i].childNodes[0].nodeValue); document.write(z[i].childNodes[0].nodeValue); } </script> </body> </html> Надеюсь что всё правильно оформил для темы. Подскажите пожалуйста, как запустить это в браузерах Хром и Опера |
|
Да, спасибо за ссылки данный метод мне известен, но он работает только с localhost, я же хотел обойтись без него.
|
Цитата:
то есть такое http://learn.javascript.ru/play/SjVTTb вам неподходит? |
Метод, что вы предлагаете мне не подходит, он подразумевает использование локального сервера, я бы хотел такой метод где не надо создавать сервер, а можно просто запустить страницы с жесткого диска
|
Антон C,
а JSON? |
Тоже нет к сожалению, он тоже использует метод responseText, а он ждет ответа от браузера, и если вызвать не через локальный сервер браузер ставит защиту от чтения данных ((((, все браузеры кроме Мозилы.
Мне советовали сделать через load вместо responseText, но load выдаёт непонятную ошибку, которую я не знаю как исправить |
Антон C, а так? :write:
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> #example-1{ text-align: center; cursor: pointer; } </style> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body> <div class="example cursor" id="example-1">Click to update</div> <script> function loadElement(url, callback) { var request = new XMLHttpRequest(); try{ request.open('GET', url); request.send(null); request.onreadystatechange = function() { if (this.readyState == 4) callback(this.responseXML); }; } catch(e) { request = new ActiveXObject("Microsoft.XMLDOM"); request.load(url); callback(request) } } var div = document.getElementById('example-1'); div.onclick = function () { loadElement('./1.xml', function(xmlDoc) { var x=xmlDoc.getElementsByTagName("title"); var y=xmlDoc.getElementsByTagName("detail"); var z=xmlDoc.getElementsByTagName("date"); var html = '' for (i=0;i<x.length;i++) { html +=x[i].childNodes[0].nodeValue; html +=y[i].childNodes[0].nodeValue; html +=z[i].childNodes[0].nodeValue; } div.innerHTML = html }) } ; </script> </body> </html> |
responseXML Опять же ,не уверен точно ли этот метод мешает браузеру но Опера и Хром без локального сервера не открывают данные, хотя в мозиле все работает , но в мозиле работали и все предыдущие методы
response вроде требует синхронного ответ браузера, поэтому без сервера он не работает |
похоже без локального сервера не обойтись(((
|
Часовой пояс GMT +3, время: 13:16. |