Парсинг картинки из 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, время: 21:29. |