Получение исходного кода с использованием XMLhttpRequest в JavaScript - PullRequest
1 голос
/ 18 января 2011

Я пытаюсь получить исходный код сайта с помощью XMLhttpRequest в javascript, но не могу получить ответ.Как я могу получить исходный код, используя XMLhttpRequest?Вот что у меня сейчас:

<script language="Javascript" type="text/javascript">
var req = new XMLHttpRequest();
req.open(
    "GET",
    "http://www.google.com",
    true);
req.onreadystatechange = statusListener;
req.send(null);

function statusListener()
{
if (req.readyState == 4) 
    {
        var docx=req.responseXML;
        alert(docx);
    }
}
</script>

Ответы [ 3 ]

0 голосов
/ 18 января 2011

Вы не можете сделать xmlHttpRequest для домена, отличного от вашей страницы, но вы все равно можете получить содержимое с помощью прокси-скрипта в вашем домене:

#proxy-script (proxy.php)
<?php
echo file_get_contents ( $_GET['url'] );
?>

И ваш javascript должен выглядеть так:

<script language="Javascript" type="text/javascript">
var myUrl = "http://www.google.com";
var req = new XMLHttpRequest();
req.open(
    "GET",
    "/proxy.php?url="+encodeURIComponent(myUrl),
    true);
req.onreadystatechange = statusListener;
req.send(null);

function statusListener()
{
if (xmlhttp.readyState == 4) 
    {
        var docx=xmlhttp.responseXML;
        alert(docx);
    }
}
</script>
0 голосов
/ 18 января 2011

Используйте это вместо данного оператора if.

    if (req.readystate == 4) {
        if (req.status == 200) {
            var docx=req.responseXML;           
            alert(docx);
            //Can also try this just in case:
            //var doc = req.responseText;
            //alert(doc);
        }
    }

Вы не проверяете, чтобы убедиться, что статус в порядке, это может привести к сбою сценария, возвращая ошибку (которую вы можете не увидеть, если у вас отладка, потому что это Javascript), поскольку ответ не готов пока оба состояния готовности не равны 4 и код состояния не равен 200. Кроме того, если responseXML не работает, попробуйте responseText, так как он может быть неправильно отформатирован.

0 голосов
/ 18 января 2011

Вы устанавливаете объект XHR в переменную с именем "req", но затем ваш обратный вызов использует "xmlhttp".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...