0

ImageResolverプラグインを取得して、php 配列で動作するように適応させようとしています。

コードを次のように削除すると、フォームのない画像が返されます。

$(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 foreach ループ内で動作するように調整したいと考えています。class='result'結果は次のdivで置き換えられます。IE: ページがクエリから URL を読み込んだ後、関数は URL を解析し、見つかった場合は画像リンクを返します。(each)またはを使用する必要があると思いますが、わかりthis()ません。

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

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() が非同期で動作する原因に注意してください。予期しない結果が生じる可能性があります。前の呼び出しが完了する前に ImageResolver.resolve() を再度呼び出す$('#result').append('<h2>No image found for ' + url + '</h2>');と、url が最後の呼び出しの URL に変更されます。これを防ぐには、for ループで新しい Resolver を初期化する必要があります。参照: Javascript のプロトタイプとインスタンスの作成

于 2013-04-16T00:12:49.930 に答える