Асинхронный запрос - PullRequest
       1

Асинхронный запрос

0 голосов
/ 08 июля 2011
request.open("GET", selectedTab + ".html", true);

Это ответит мне всей HTML-страницей или только текстовой частью в некоторых специальных тегах.Если на моей html-странице есть изображения и абзацы, что именно будет восстановлено для меня в моем объекте запроса, и как я могу использовать отдельные теги (используя javacript), если он возвращает их все?HTML-файл

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” 
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” lang=”en” xml:lang=”en”>
<head>    
<link type="text/css" href="something" rel="stylesheet">
</head>
<body>
<p>hello</p>
<img src="something.jpg" />
</body>
</html>

Теперь, как я могу получить отдельные компоненты файла.

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Вы получите только HTML-код файла.Вам нужно будет проанализировать элементы самостоятельно, чтобы извлечь любые внешние файлы (например, css, js и т. Д.)

Отредактировано, чтобы отвечать на изменения (x2): ваш запрос ajax получит HTML, но если вы захотитеполучить таблицу стилей или изображение, вам придется разобрать его.Например (от всей головы, не полностью протестировано:)):

var iframe = document.createElement("iframe"); //creating dummy iframe to load html into in order to parse it. DOMParser is another option;
iframe.innerHTML = response; //assuming response is the variable you stored the responseText from the AJAX request
var doc = iframe.contentDocument //get the document property of the iframe
var url = doc.getElementsByTagName("link")[0].href; //gets url of stylesheet
var img = doc.getElementsByTagName("img")[0].src; //gets url of img

Затем вы можете сделать больше запросов, чтобы получить фактические предметы.

Если все, что вы хотите, этополучить различные элементы, тогда вы можете использовать технику doc.getElementsByTagName("p") для получения тегов.Или есть другие методы DOM, которые могут работать лучше в зависимости от HTML и контекста.

0 голосов
/ 08 июля 2011

Я бы рекомендовал использовать библиотеку http://jquery.com/, чтобы помочь разобрать возвращаемые данные. Например:

<script type="text/javascript">

$(function() { // just a document.ready wrapper
    $.get(selectedTab + ".html", function(data) {
        var parsedData = $(data);
        var specificValue = $("#someID", parsedData); // any CSS selector will work in place of #someID
    });
});

</script>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...