Загрузить содержимое страницы в переменную
Как я могу загрузить содержимое страницы в переменную JavaScript с наименьшим количеством кода, без фреймворка и с минимальным влиянием на производительность?
Извините ребята. Я забыл упомянуть: получить содержимое страницы из указанного URL-адреса в JS var.
Я уже видел альтернативу Брендана в другом месте и попробовал ее, но в то время она не работала, и сейчас она не работает. Тем временем Firebug и протестированные браузеры (IE8 и FF) не сообщают ни об одной ошибке. Так что не так?
4 ответа
Это модифицированная версия примера, который вы можете найти по адресу w3schools.com.
Так что просто сделайте «example.html» любым путем (относительным или абсолютным) к странице, которую вы хотите загрузить, и xmlhttp.responseText будет строкой, содержащей содержимое ответа. Вы также можете использовать xmlhttp.responseXML , если хотите, чтобы он был сохранен как просматриваемый XML-документ. В любом случае, просто назначьте любой из них переменную по вашему выбору, и она у вас будет!
Обратите внимание, что loadXMLDoc ничего не возвращает напрямую, а определяет один из его членов (onreadystatechange) для выполнения этой работы и выполняет это только в определенных условиях (readyState и status). Вывод — не назначайте вывод этой функции ни одной переменной. Скорее сделайте что-то вроде:
var xmlhttp=false; loadXMLDoc('http://myhost/mycontent.htmlpart'); if(xmlhttp==false) < /* set timeout or alert() */ >else < /* assign `xmlhttp.responseText` to some var */ >
Без этого все, что можно увидеть, является «неопределенным» .
Простое решение для загрузки данных JSON с URL-адреса, например /v1/data?format=json :
xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET", "/v1/data?format=json", false); xmlhttp.send(); var data = JSON.parse(xmlhttp.responseText);
Чтобы получить все внутри тегов HTML:
var html = document.getElementsByTagName('html')[0]; var text = html.innerHTML;
Затем вы можете обернуть это в HTML-теги. Не захватывает doctype или что-либо еще, что у вас было бы вне html-тегов, но это быстрый способ получить большую часть содержимого.
Я знаю, что этот вопрос действительно старый, но у меня возникла та же проблема с попыткой передать содержимое страницы в переменную, но я наконец-то нашел способ в Javascript: D (С некоторой помощью из Интернета . )
Я сделал функцию с обратным вызовом, чтобы получить нужную страницу:
function getPageContents(callback,url,params) < http=new XMLHttpRequest(); if(params!=null) < http.open("POST", url, true); http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); >else < http.open("GET", url, true); >http.onreadystatechange = function() < if(http.readyState == 4 && http.status == 200) < callback(http.responseText); >> http.send(params); >
Обратите внимание, что я сделал это таким образом, что он не будет принимать параметры GET. Это сделано намеренно, так как мне не нужно использовать GET для моего приложения. Если параметры установлены, они будут отправлены как POST.
Затем, чтобы использовать функцию, скажем, я хочу отправить имя в findpersoninfo.php , который выведет JSON-массив информации о людях, я могу сделать это:
getPageContents(function(result) < personinfo=JSON.parse(result); //Now I can do anything here with the personinfo array >,'http://localhost/findpersoniinfo.php','fname=stretch&lname=wright')
Сделав еще один шаг, вы можете вложить это в другую функцию, давайте вызовем ее getPersonInfo() :
function getPersonInfo(fname,lname) < getPageContents(function(result) < personinfo=JSON.parse(result); //Now I can do anything here with the personinfo array >,'http://localhost/findpersoninfo.php','fname='+fname+'&lname='+lname) >
Конечно, мое знание Javascript все еще находится в зачаточном состоянии, и приветствую любые конструктивные отзывы: D
Как загрузить сайт в переменную
Может вопрос не совсем корректны, но мне надо чтобы явовский скрипт загрузил некотрую страничку в переменную.
к примеру var s = loadsite(‘http://WWW.GOOGLE.COM’); — это типа что я хочу. в переменной хочу хтмл код или текст этого сайта
Как загрузить данные в переменную?
В html есть textarea, туда ввожу текст. Как сделать чтобы этот текст попал в переменную в js? Как.
Загрузить файл в переменную
Здравствуйте, я в скрипте полный ноль. Может кто подскажет как файл сохранить себе в переменную.
Можно ли в переменную загрузить изображение?
а можно ка нибудь в Javascript в переменную загрузить изображение. типо создать обект в котором.
Можно ли загрузить страницу с другого сервера в переменную?
Можно ли загрузить страницу с другого сервера в переменную? Необходимо с нее получить значение.
Сообщение было отмечено как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
var x=null; // Здесь будет объект XMLHttpRequest // -- START: Проверенный в боях код --// if(window.XMLHttpRequest) { x=new window.XMLHttpRequest(); if(x.overrideMimeType) x.overrideMimeType('text/xml'); }else if(window.ActiveXObject) {try { x=new ActiveXObject("Msxml2.XMLHTTP") } catch(e) {try { x=new ActiveXObject("Microsoft.XMLHTTP") } catch(e){} } } // -- END: Проверенный в боях код --// if(x){ x.open(GET,",false/'>http://www.google.com",false) x.send(null); // Вот он момент счастья. var s=x.responseText; // Теперь в s содержится HTML-код. >else alert("Прости друг!")
Здесь я опустил проверку ответа на наличие ошибок, да и вызовы open и send лучше поместить в блок try . catch
Вообще всё что я написал выше — на случай если дело горит и учить что-то некогда. А если есть время — сходи на http://www.knizhek.net/ www.knizhek.net и найди там книгу Ajax в действии — с неё всего лучше начать. Судя по твоему вопросу вряд ли ты имеешь представление об AJAX — но это наше почти сегодня и через пару лет большинство сайтов продвинутых компаний и не только будет выполнено по технологии AJAX.
Да, вот ещё — если сечешь в английском — зайди на http://www.mozilla.org/ www.mozilla.org -поищи «AJAX». На http://www.msdn2.com/library/ www.msdn2.com/library/ — поищи «XMLHttpRequest Object».
Надеюсь, я хоть чем-то помог.
Как загрузить видео на ютуб с другого сайта? (Загрузить видео в конкретный плейлист)
Как загрузить, с другого сайта, видео на ютуб в конкретный плейлист? А то после того как они.
Как передать переменную окна через текстовую переменную?
Открыл одно окно, потом второе, и хочу передать индетефикатор первого окна во второе, чтобы оно там.
Загрузить файл JSON в переменную
Привет, ребят! Такой вопрос возник мне нужно загрузить в js в переменную данные JSON я не могу.
Javascript Исходный код страницы в переменную
Есть скрипт, который открывает урл в новом окне, нужно получить в переменную хтмл код этой открытой страницы и дальше работать с ним как со строкой.
Подскажите кто может плиз, как получить исходный код в переменную?
ЗЫ: открываемая страница не моя, в ней ничего изменить не могу
17 ответов
var w = window.open(«./page.htm»); // Страница с того же домена
function loadCode() var code = w.document.documentElement.innerHTML;
alert(code);
return true;
>
if (w.addEventListener) w.addEventListener(«load», loadCode, false);
> else w.attachEvent(«onload», loadCode);
>
[offtop]
5 баллов блин 😀
[/offtop]
var w = window.open(«http://script.emanual.ru/?a=22&i=5»); // URL
function loadCode() var code = w.document.documentElement.innerHTML;
alert(code);
return true;
>
if (w.addEventListener) w.addEventListener(«load», loadCode, false);
> else w.attachEvent(«onload», loadCode);
>
верно, но страница не с тогоже домена, а сторонний урл, например нttp://google.com/
С URL не работает 🙁
А вы сами по ссылке ходили? 😮
The name is an acronym standing for [COLOR=»Red»]Asynchronous JavaScript and XML[/COLOR]. Ajax is asynchronous in that loading does not interfere with normal page loading. [COLOR=»Red»]Javascript is the programming language Ajax function calls are made in[/COLOR]. Data retrieved using the technique is commonly formatted using XML, as reflected in the naming of the XMLHTTPRequest object from which Ajax is derived.
Уважаемый. AJAX это не только JavaScript, но еще и серверная часть, которая пишется на совсем других языках.
Уважаемый. AJAX это не только JavaScript, но еще и серверная часть, которая пишется на совсем других языках.
var xmlHttp = new ActiveXObject(«Microsoft.XMLHTTP»);
function process()
if (xmlHttp)
try
xmlHttp.open(«GET», «http://ya.ru», true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
>
catch (e)
alert(«Can’t connect to server:\n» + e.toString());
>
>
>
function handleRequestStateChange()
if (xmlHttp.readyState == 4)
<
if (xmlHttp.status == 200)
try
response = xmlHttp.responseText;
alert(response);
>
catch(e)
alert(«Error reading the response: » + e.toString());
>
>
else
alert(«There was a problem retrieving the data:\n» +
xmlHttp.statusText);
>
>
>
в response в итоге содержится то что нужно автору.
Серверная часть конечно присутсвует, но к ней я не имею отношения.
Правда при запуске этого скрипта браузеры кидают сообщение о безопасности. Это происходит потому что скрипт запрашивает данные с другого хоста, а это считается небезопасным. Это решается если на своем сервере (на том же хосте где находится html с моим js) разместить «прокси» скрипт (на любом языке) который будет загружать нужную страничку и отдавать клиенту(браузеру).