2015-04-04 4 views
0

У меня есть html-документ, который создает таблицу с данными, предоставляемую архивом xml. В живом предварительном просмотре скобок adobe я вижу страницу и данные.Пустая страница с HTML, отображающая данные XML

Но, когда я пытаюсь открыть в каком-то браузере, например IE, Firefox или Chrome, страница отображается, просто в пробеле.

Здесь он является частью кода html и ниже, кода xml.

это HTML-код

<!DOCTYPE html> 
<html> 
<head> 
<style> 

table { border-collapse: collapse; font-family: Futura, Arial, sans-serif; border: 1px solid #777; } 
caption { font-size: larger; margin: 1em auto; } 
th, td { padding: .65em; } 
th, thead { background: #000; color: #fff; border: 1px solid #000; } 
tr:nth-child(odd) { background: #ccc; } 
tr:hover { background: #aaa; } 
td { border-right: 1px solid #777; } 

    </style> 
</head> 
<body> 
<script> 
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","prueba_new.xml",false); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 

document.write("<table><tr><th>CardN</th><th>CardC</th><th>CardE</th><th>CardNe</th></tr>"); 
var x=xmlDoc.getElementsByTagName("CCard"); 
for (i=0;i<x.length;i++) 
    { 
    document.write("<tr><td>"); 
    document.write(x[i].getElementsByTagName("CardN")[0].childNodes[0].nodeValue); 
    document.write("</td><td>"); 
    document.write(x[i].getElementsByTagName("CardC")[0].childNodes[0].nodeValue); 
     document.write("</td><td>"); 
    document.write(x[i].getElementsByTagName("CardE")[0].childNodes[0].nodeValue); 
     document.write("</td><td>"); 
    document.write(x[i].getElementsByTagName("CardNe")[0].childNodes[0].nodeValue); 
    document.write("</td></tr>"); 
    } 
document.write("</table>"); 
</script> 
</body> 
</html> 

Вот код XML, конечно, сам файл XML, содержит несколько сотен записей.

<?xml version="1.0"?> 
<numbers> 
<CCard> 
<CardNe>Volkervun</CardNe> 
<CardN>10000034999</CardN> 
<CardC>Red Team</CardC> 
<CardE>Volker.vcd</CardE> 
</CCard> 
<CCard> 
<CardNe>Lady Mars</CardNe> 
<CardN>10009899899</CardN> 
<CardC>Blue Team</CardC> 
<CardE>LadyM.vcd</CardE> 
</CCard> 
</numbers> 

Я пробую несколько вещей, но никто из них не работает. Некоторая идея для этой пустой страницы?

+0

'document.write', браузеры все еще поддерживают это? Гораздо лучший подход состоит в том, чтобы собрать всю таблицу в памяти (в строковой переменной), а затем поместить ее в элемент контейнера, используя '[контейнерный элемент] .innerHTML = [строковая переменная];' –

+0

Хотя document.write уродливый и устаревшая технология, я не верю, что это преступник. Вы видите ошибку скрипта в консоли разработчика? Можете ли вы попробовать поставить статический текст сразу после и непосредственно перед для подтверждения правильной загрузки страницы? –

+0

Похоже, вы пытаетесь открыть файл без использования локального веб-сервера. Безопасность ограничит ajax таким образом – charlietfl

ответ

1

Если вы открываете файл в своем браузере, просто дважды щелкнув файл .html на своем компьютере, вы откроете его в соответствии с протоколом file://. Запрос GET для файла XML завершится неудачно из-за перекрестной помехи браузера: с страницами под file:// рассматривается как отдельный домен, поэтому вашей .html-странице не разрешено читать ваш XML-файл.

Он работает в скобках, потому что Live Preview загружает простой локальный веб-сервер, поэтому вместо этого ваша страница просматривается в браузере под кодом http://. Чтобы воспроизвести эффект без скобок, запустите другой локальный веб-сервер.

Мой личный любимый простой веб-сервер для тестирования: serf - если на вашем компьютере установлен NodeJS, вы можете установить его, введя npm install -g serf в командной строке. Затем вы можете запустить сервер, просто набрав serf в любой папке, в которой находится ваш .html-файл.

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