Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.05.2014, 21:06
Новичок на форуме
Отправить личное сообщение для nechotack Посмотреть профиль Найти все сообщения от nechotack
 
Регистрация: 07.05.2014
Сообщений: 5

Вывод переменных, полученных get-запросом
Здравствуйте. Возникла необходимость написать скрипт, который должен забирать все изображения с поста вконтакте get-запросом и вставлять их в контейнер на сайте. Мною был написан скрипт, который забирает все картинки, но вот проблема с выводом. В контейнер выводит только первое изображение. Пробовал сделать все через функцию .each, вставлял её где только можно, но безрезультатно.
Вот собственно код скрипта:

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">
jQuery.ajax = (function(_ajax){
var protocol = location.protocol,
hostname = location.hostname,
exRegex = RegExp(protocol + '//' + hostname),
YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?',
query = 'select * from html where url="{URL}" and xpath="*"';
function isExternal(url) {
return !exRegex.test(url) && /:\/\//.test(url);
}
return function(o) {
var url = o.url;
if ( /get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url) ) {
o.url = YQL;
o.dataType = 'json';
o.data = {
q: query.replace(
'{URL}',
url + (o.data ?
(/\?/.test(url) ? '&' : '?') + jQuery.param(o.data)
: '')
),
format: 'xml'
};
if (!o.success && o.complete) {
o.success = o.complete;
delete o.complete;
}
o.success = (function(_success){
return function(data) {
if (_success) {
_success.call(this, {
responseText: (data.results[0] || '')
.replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '')
}, 'success');
}
};
})(o.success);
}
return _ajax.apply(this, arguments);
};
})(jQuery.ajax);
</script>


<script type="text/javascript">
$(document).ready(function() {
$.get("http://vk.com/wall-52495835_25216", function(res) {
var mplink=$(res.responseText);
var mp = mplink.find('img').attr("src");
$("#images").html("<img src="+mp+">"+"src");
});
});
</script>


<style>
img{
height: 100px;
}
#test {
background:#f00;
}
</style>

</head>
<body>
<div id="images">
</div>
</body>
</html>


Первый скрипт позволяет cделать кросс-доменный get-запрос (ссылка на github): https://github.com/padolsey/jquery.f...ss-domain-ajax

Второй скрипт, написанный мною. Собственно в нем и проблема. Задача, по идее, из легких, но я никак не могу с ней справиться, так как раньше максимум, что я делал с помощью js это выплывающее меню. Надеюсь, Вы поможете мне разобраться. Спасибо.

Последний раз редактировалось nechotack, 07.05.2014 в 21:16.
Ответить с цитированием
  #2 (permalink)  
Старый 08.05.2014, 08:18
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

var mp = mplink.find('img').attr("src");// ты берешь коллекцию имгов , и пытаешься тут же получить src, логично что получаешь src только первого имга в коллекции
$("#images").html("<img src="+mp+">"+"src");//и вот ты тут вставляешь свой имг с этим src, наивно пологая что этот код вставит несколько имгов.Тут как бэ нужно как минимум цикл организовать

var mp = mplink.find('img'):
mp.each(function(){
$("#images").append($('<img>',{src:this.src}))
})

Как то так.

Последний раз редактировалось krasovsky, 08.05.2014 в 08:20.
Ответить с цитированием
  #3 (permalink)  
Старый 11.05.2014, 20:01
Новичок на форуме
Отправить личное сообщение для nechotack Посмотреть профиль Найти все сообщения от nechotack
 
Регистрация: 07.05.2014
Сообщений: 5

Сообщение от krasovsky Посмотреть сообщение
var mp = mplink.find('img').attr("src");// ты берешь коллекцию имгов , и пытаешься тут же получить src, логично что получаешь src только первого имга в коллекции
$("#images").html("<img src="+mp+">"+"src");//и вот ты тут вставляешь свой имг с этим src, наивно пологая что этот код вставит несколько имгов.Тут как бэ нужно как минимум цикл организовать

var mp = mplink.find('img'):
mp.each(function(){
$("#images").append($('<img>',{src:this.src}))
})

Как то так.
Спасибо, krakovsky! Действительно хороший ответ!
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2014, 21:09
Новичок на форуме
Отправить личное сообщение для nechotack Посмотреть профиль Найти все сообщения от nechotack
 
Регистрация: 07.05.2014
Сообщений: 5

Не понимаю, почему данный код не работает с атрибутом value тега input? Если не сложно, подскажите.

<script type="text/javascript">
$(document).ready(function() {
$.get("http://vk.com/wall-1980_277410", function(res) {
var mplink=$(res.responseText);
var mp = mplink.find('input');
mp.each(function(){
$("#images").append($('<input>',{value:this.value}))
});
});
});
  </script>
Ответить с цитированием
  #5 (permalink)  
Старый 15.05.2014, 13:16
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

А что не работает?? Какая ошибка?? Что в консоли?
Ответить с цитированием
  #6 (permalink)  
Старый 17.05.2014, 11:13
Новичок на форуме
Отправить личное сообщение для nechotack Посмотреть профиль Найти все сообщения от nechotack
 
Регистрация: 07.05.2014
Сообщений: 5

В консоль никаких ошибок не выводит. Просто в контейнер "#images" ничего не вставляется. Пробовал вывести другой атрибут (id) тега input, еще игрался с другими тегами - тот же результат. Ничего не понимаю, ведь даже при пустом атрибуте в контейнер должно выводиться "[object Object]". Разве скрипту есть разница с какими элементами работать?
Ответить с цитированием
  #7 (permalink)  
Старый 17.05.2014, 11:31
Профессор
Отправить личное сообщение для depp Посмотреть профиль Найти все сообщения от depp
 
Регистрация: 22.04.2014
Сообщений: 151

скрипту есть разница на какой домен обращаться. вам нужно использовать кроссдоменный запрос. ajax со статусом crossDomain: true, и изучить api вконтакта для получения нужных данных.
Ответить с цитированием
  #8 (permalink)  
Старый 18.05.2014, 02:06
Новичок на форуме
Отправить личное сообщение для nechotack Посмотреть профиль Найти все сообщения от nechotack
 
Регистрация: 07.05.2014
Сообщений: 5

https://github.com/padolsey/jquery.f...ss-domain-ajax
Этот скрипт позволяет сделать кроссдоменный get-запрос.

В случае с вк скрипт krakovsky работает только с тегом <img>. Кстати, с яндексом даже <img> вернуть не получилось. С google.com же возвращаются все данные. Скорее всего разработчики исключают возможность парсинга данных с их ресурсов. Так что, да, без вк api здесь никак.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод нескольких переменных с функции SnowyWolf Общие вопросы Javascript 10 23.04.2014 14:34
Вывод списка по количеству переменных utb Элементы интерфейса 10 27.02.2014 13:40
Вывод случайных элементов из массива в таблицу Narm0 Общие вопросы Javascript 10 06.08.2013 12:39
Назначение переменных из вне qazibum Общие вопросы Javascript 4 16.08.2012 02:00
Вывод переменных MasterHrust Javascript под браузер 4 03.08.2011 15:41