-1

以下のコードを使用して画像を検索し、リンクをテキストエリアに保存しています。

しかし、どう直せばいいのかわからないという問題があります。表示を許可alertした場合にのみ機能します。

var links = '' , file = '' , img_exist = '';
$('a:has(img)').filter(function() {
    return $(this).attr('href').match(/(jpg)$/);
}).each(function(){
    file = $(this).attr('href');
    $.ajax({
        url:file,
        type:'HEAD',
        error: function(){
            img_exist = false;
        },
        success: function(){
            img_exist = true;
        }
    });
    //alert('WTH?');
    if ( img_exist == true ){
        links = links + file + '\n';
    }
});
$('#sfi_link').val(links);
4

2 に答える 2

2

ステートメントは、AJAX 呼び出しがブラウザーによって送信ifされた直後に実行されます。AJAX は非同期であるため、応答を待ちません。

コールバックを入れる必要がありlinks = links + file + '\n';ますsuccess

于 2012-09-17T09:04:43.873 に答える
0

問題は、非同期呼び出しを ajax リクエストとして使用していることです。非同期コールバックは後に発生します

if ( img_exist == true ){
        links = links + file + '\n';
}

したがって、このコードを関数に入れることをお勧めしますsuccess

于 2012-09-17T09:05:04.610 に答える