2011-01-03 1 views
2

Скажем, у меня есть XML-документ на веб-сервере (www.example.com/example.xml). На моей главной странице, если я хотел бы получить этот документ в виде строки, как я могу это сделать?Используйте Javascript для извлечения HTML-кода в одном домене

Я пробовал xmlhttprequest - может быть, я использую это неправильно? Он возвращает его как «неопределенное». Помогите?

  var xml_page = new XMLHttpRequest(); 
      xml_page.open("GET", "http://www.samedomain.com/example.xml", true); 
      if (xml_page.readyState == 4 && xml_page.status == 200) { 
       var data = xml_page.responseText; 
      } 
      document.write(data); 

ответ

5

Ваших document.write пожаров перед барельефом данных был неправдоподобным, чтобы получить код работы работу в основном как есть, он должен был бы быть синхронный запросом, например:

xml_page.open("GET", "http://www.samedomain.com/example.xml", false); 
xml_page.send(null); 

Тем не менее, лучше держать его асинхронно (что исключает document.write ... тоже хорошая вещь), как это:

xml_page.open("GET", "http://www.samedomain.com/example.xml", true); 
xml_page.onreadystatechange = function() { 
    if (xml_page.readyState == 4 && xml_page.status == 200) { 
    alert(xml_page.responseText); 
    } 
}; 
xml_page.send(null); 
+0

@ehfeng: Где Ник делает 'предупреждение (xml_page.responseText)', вы можете более полезно сделать что-то вроде 'document.getElementById ('цель') innerHTML + xml_page.. responseText; ', который очень близок к тому, что вы изначально делали. Включите 'div' с' id = 'target'', где вы хотите, чтобы XML появлялся. (В обоих случаях - ваш оригинал и мой «innerHTML» выше - вы полагаетесь на браузер для обработки XML-версии HTML-кода, будет ли это в порядке, зависит от документа и, возможно, от браузера ...) –

-1

Попробуйте использовать jQuery.get - это намного проще и кросс-браузер.

+1

Это не очень полезно для решения проблемы - что 'data' не существует до тех пор, пока запрос не будет завершен. – alex

+0

Используйте jQuery.ajax с async = false аргументом: http://api.jquery.com/jQuery.ajax/ –

0

Попробуйте это:

var xml_page = new XMLHttpRequest(); 
xml_page.open("GET", "http://www.samedomain.com/example.xml", true); 
if (xml_page.readyState == 4 && xml_page.status == 200) { 
    var data = xml_page.responseText; 
    document.write(data); 
} 
Смежные вопросы