2012-05-30 3 views
0

Я скопировал этот код из W3Schools (вместе с исходным XML файла cd_catalog.xml), и я получаю пустую страницу:XMLHttpRequest не работает (пустая страница)

<html> 
<body> 

<script type="text/javascript"> 
    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","cd_catalog.xml",false); 
    xmlhttp.send(); 
    xmlDoc=xmlhttp.responseXML; 

    document.write("<table border='1'>"); 
    var x=xmlDoc.getElementsByTagName("CD"); 
    for (i=0;i<x.length;i++) 
    { 
     document.write("<tr><td>"); 
     document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); 
     document.write("</td><td>"); 
     document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue); 
     document.write("</td></tr>"); 
    } 
    document.write("</table>"); 
</script> 

</body> 
</html> 

Я попытался Opera, Firefox, IE и Chrome. Ничего. :(

+1

Как вы подавляете это? Я думаю, что ваш cd_catalog.xml не может быть найден ... –

+1

Вы используете веб-сервер или получаете доступ к нему через URL-адрес файла, например file: /// C: /test/test.html. Последнее может быть проблемой. – McGarnagle

+2

http://w3fools.com/ – Andreas

ответ

1

Поскольку вы не используете веб-сервер, попробуйте сделать следующее:

xmlhttp.open("GET","file:///C:/cd_catalog.xml", false); 

Вы можете в конечном итоге нужен веб-сервер, потому что браузеры не позволят вам доступ сценария к локальным файлам, например, см обсуждение здесь:. http://www.webdeveloper.com/forum/showthread.php?t=233306

Так рассмотреть вопрос о создании простой веб-сервер на вашей машине, как lighttpd

EDIT: как интерпретировать спецификацию (http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-open%28%29-method) является то, что этим м через HTTP. Однако это не совсем понятно. В этом контексте URL-адрес может не разрешаться, поэтому ожидается, что приведенный выше фрагмент кода может не работать, и вы должны нуждаться в веб-сервере.

Родственный вопрос:

Read file:// URLs in IE XMLHttpRequest

и

Allow Google Chrome to use XMLHttpRequest to load a URL from a local file

+0

Пробовал файл, не работал ни в одном браузере. Это сообщение об ошибке, которое я получаю (консоль Chrome): 1) XMLHttpRequest не может загрузить файл: /// C: /cd_catalog.xml , Запросы на кросс-начало поддерживаются только для HTTP. 2) Непринятая ошибка: NETWORK_ERR: XMLHttpRequest Exception 101 cd_catalog.html: 14 В любом случае, я думаю, я попробую запустить его из WAMP или еще чего-нибудь. – pupul07

+0

Существует множество опций для веб-серверов, которые вы можете настроить довольно легко. Похоже, вам это нужно. Также см. Здесь: http://stackoverflow.com/questions/8449716/cross-origin-requests-are-only-supported-for-http-but-its-not-cross-domain –

+0

Установленный WAMP - теперь работает отлично! :) – pupul07

1

Загрузить свой код на веб-сервере. Вы получите желаемый результат во всех браузерах, таких как IE, Chrome или Mozilla. Но если вы попробуете этот же код на локальном компьютере, IE и Chrome не будут работать.

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