-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

您的if语句在浏览器发送AJAX 调用后立即执行。它不等待响应,因为 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 回答