не работает метод 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, время: 00:04. |