Парсинг картинки из google на лету.
Здравствуйте.
Опишу саму задачу: Пользователь вводит на сайте запрос, ему выдается страница (точнее она не выдается, а появляется из display:none, т.е. фактически он остается на той же страницу) с запросом и картинкой. Картинка берется по запросу из гугла. Все уже реализовано, но проблема! На сайте не работает. А локально (если просто документ html открыть) - работает, и только в хроме. Вот часть кода:
google.setOnLoadCallback(function()
{
var imgname = document.getElementById('ид инпута').value;
var image_key=encodeURIComponent(imgname);
function getimage(id) {
$('#imgbook')['attr']('src', './progress.gif');
$['getJSON']('http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=' + image_key + '&rsz=2&imgsz=medium&callback=?', function (json) {
$('#imgbook')['attr']('src', (json['responseData']['results'][id]['url']));
$('#imgbook')['error'](function () {
getimage(id + 1);
});
});
};
getimage(0);
});
А в html просто выводится: <img id="imgbook" width="200" src=""> Я заметил, что проблема именно из-за того, что картинка берется по запросу, который введет пользователь. Если задать переменную сразу (например var = 'запрос для картинки';) то все нормально. Вторые сутки вожусь, не могу никак сделать. Пожалуйста, выручайте. |
ingod,
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>
$(function(){
var imgname = document.getElementById('ид инпута').value;
var image_key=encodeURIComponent(imgname);
function getimage(id) {
$('#imgbook')['attr']('src', './progress.gif');
$['getJSON']('http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=' + image_key + '&rsz=2&imgsz=medium&callback=?', function (json) {
$('#imgbook')['attr']('src', (json['responseData']['results'][id]['url']));
$('#imgbook')['error'](function () {
getimage(id + 1);
});
});
};
getimage(0);
});
</script>
<input id="ид инпута" value="1" >
<img id="imgbook" width="200" src="">
Всё работает. Скорее всего проблема в google.setOnLoadCallback - хз когда он должен срабатывать, видать не тогда когда готово всё... |
Да он то работает, но все равно проблема таже. В вашем варианте значение инпута уже дано изначально, а оно будет вводиться пользователем. И вот тогда то и не работает.
Цитата:
|
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>
$(function(){
var imgname = document.getElementById('focusedInput').value;
var image_key=encodeURIComponent(imgname);
function getimage(id) {
$('#imgbook')['attr']('src', './progress.gif');
$['getJSON']('http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=' + image_key + '&rsz=2&imgsz=medium&callback=?', function (json) {
$('#imgbook')['attr']('src', (json['responseData']['results'][id]['url']));
$('#imgbook')['error'](function () {
getimage(id + 1);
});
});
};
getimage(0);
});
</script>
<input id="focusedInput" value="сиськи" >
<button type="submit" id="find-file">Поиск</button>
<img id="imgbook" width="200" src="">
Вот как заставить работать? Чтобы по нажатию поиска, картинка новая бралась, на основе введенного запроса? |
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>
$(function(){
$('#find-file').click(function(){
getimage(0, encodeURIComponent($('#focusedInput').val()));
});
function getimage(id, image_key) {
$('#imgbook')['attr']('src', './progress.gif');
$['getJSON']('http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=' + image_key + '&rsz=2&imgsz=medium&callback=?', function (json) {
$('#imgbook')['attr']('src', (json['responseData']['results'][id]['url']));
$('#imgbook')['error'](function () {
if(json['responseData']['results'][++id]) getimage(id, image_key); //проверка, чтоб небыло бесконечного цикла
});
});
};
});
</script>
<input id="focusedInput" value="сиськи" >
<button type="submit" id="find-file">Поиск</button>
<img id="imgbook" width="200" src="http://javascript.ru/forum/images/smilies/smile.gif">
|
Aetae, спасибо!
Так гораздо лучше. |
У меня еще вопрос появился.
Как теперь получить url новой картинки и задать его в переменную?
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>
$(function(){
$('#find-file').click(function(){
getimage(0, encodeURIComponent($('#focusedInput').val()));
});
function getimage(id, image_key) {
$('#imgbook')['attr']('src', './progress.gif');
$['getJSON']('http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=' + image_key + '&rsz=2&imgsz=medium&callback=?', function (json) {
$('#imgbook')['attr']('src', (json['responseData']['results'][id]['url']));
$('#imgbook')['error'](function () {
if(json['responseData']['results'][++id]) getimage(id, image_key); //проверка, чтоб небыло бесконечного цикла
});
});
};
});
var imgurl = $("#imgbook").val();
$("#img-url").text(imgurl);
</script>
<input id="focusedInput" value="сиськи" >
<button type="submit" id="find-file">Поиск</button>
<img id="imgbook" width="200" src="http://javascript.ru/forum/images/smilies/smile.gif">
<br>
<tr>
<td>Url картинки</td>
<td id="img-url"></td>
</tr>
Доработайте пожалуйста. У меня получалось сделать, но выводился ./progress.gif, а не новая. |
| Часовой пояс GMT +3, время: 19:20. |