2013-04-15 2 views
0

Я пытаюсь использовать плагин ImageResolver и адаптировать его для работы с массивом php.Преобразование функции jquery из формы submit to php array result

Зачистка код на это возвращает изображение без формы:

$(function(){ 

    var url = $('#url').val(); 
    ImageResolver.resolve(url, function(image){ 
     if (image) { 
      $('#result').html('<img src="' + image + '" alt="">'); 
     } else { 
      $('#result').html('<h2>No image found</h2>'); 
     } 

}); 
}); 

Я хочу, чтобы приспособить его к работе в цикле PHP Еогеасп. результаты будут заменены на следующий class='result' div. IE: после того, как страница загрузила URL-адреса из запроса, функция будет анализировать URL-адрес и вернуть ссылку изображения, если она найдена. Я предполагаю, что мне нужно использовать (each) или this(), но я не могу понять это.

Может кто-нибудь указать мне в правильном направлении?

+0

вы можете написать js с php echo ... но im не совсем уверен, что вы спрашиваете – 2013-04-15 20:46:57

+0

Вы не поставляете много информации здесь, но вам нужно объединить ваш php-код с javascript как-то. Например, вы можете динамически создавать массив javascript в вашем цикле foreach php. –

ответ

0
 <script src="ImageResolver/URI.min.js"></script> 
     <script src="ImageResolver/ImageResolver.js"></script> 



    <? 
     $javascriptarray = 'var urls = ['; 
     $counter=0; 
     foreach (array('http://www.apple.com/','http://github.com/','http://www.test.com/') as $url) 
     { 
      if ($counter++ > 0) $javascriptarray .= ','; 
      $javascriptarray .= '"'.$url.'"'; 
     } 
     $javascriptarray .= '];'; 
    ?> 
<script>  
<?=$javascriptarray?> 

//The ImageResolver will try all the resolvers one after the other 
//in the order of their registration 

//Resolvers that guess the image URL 
ImageResolver.register(new FileExtensionResolver()); 
ImageResolver.register(new ImgurPageResolver()); 
ImageResolver.register(new NineGagResolver()); 
ImageResolver.register(new InstagramResolver()); 

//Resolvers that need extra ajax requests 
ImageResolver.register(new ImgurAlbumResolver()); 
ImageResolver.register(new OpengraphResolver()); 
ImageResolver.register(new WebpageResolver()); 

//Some jQuery code to make the demo work 
//Use a crossdomain proxy (required by some plugins) 
$.ajaxPrefilter('text', function(options) { 
    options.url = "http://furious-stream-4406.herokuapp.com?src=" + encodeURIComponent(options.url); 
}); 

$(function(){ 


var length = urls.length, 
url = null; 
    for (var i = 0; i < length; i++) { 
      url = urls[i]; 
      ImageResolver.resolve(url, function(image){ 
      if (image) { 
       $('#result').append('<img src="' + image + '" alt=""><br>'); 
      } else { 
       $('#result').append('<h2>No image</h2>'); 
       //$('#result').append('<h2>No image found for ' + url + '</h2>'); 
      } 
     }); 
    } 
}); 

</script> 

Остерегайтесь причины ImageResolver.resolve() работает asynchrone, вы можете получить неожиданные результаты. Вызовите ImageResolver.resolve() еще до завершения предыдущего вызова, измените URL-адрес в $('#result').append('<h2>No image found for ' + url + '</h2>'); на URL вашего последнего вызова на примере. Чтобы предотвратить это, вам необходимо инициализировать новый Resolver в for-loop. см.: Javascript prototypes and instance creation

+0

Спасибо, Bass Jobsen, это заработало –