2010-12-15 47 views
11

我试图在我的ajax调用正在运行时显示加载图像,但使用beforeSend属性不会改变我的结果区域。正在运行jQuery ajax时加载gif图像

$.ajax({ 
    url: "/answer_checker.php", 
    global: false, type: "POST", 
    data: ({...clipped...}), 
    cache: false, 
    beforeSend: function() { 
    $('#response').text('Loading...'); 
    }, 
    success: function(html) { 
    $('#response').html(html); 
    } 
} 

在此先感谢。

+0

你的其他选择是什么,例如偶然是'async:false'? – 2010-12-15 10:46:11

+0

'global:false,type:“POST”,data:({...}),cache:false'我没有使用'async' – 2010-12-15 10:54:17

回答

8

我有一个解决方案,它可能不是最好的方式做到这一点,但它有在这种情况下工作。

$('input').keyup(function() { 

    $('#response').text('loading...'); 

    $.ajax({ 
    url: "/answer_checker.php", 
    global: false, type: "POST", 
    data: ({...clipped...}), 
    cache: false, 
    success: function(html) { 
     $('#response').html(html); 
    } 
    }); 
}); 

通过在调用ajax函数之前设置共鸣内容,它会一直显示加载文本,直到ajax调用更新相同的内容为止。

感谢大家花时间回答。

Alan

+0

这是简单而简单的方法,我总是这样做 – 2014-05-27 14:05:15

3

被后cache: false

+0

感谢您的回答,我刚添加了我使用的额外选项。 – 2010-12-15 11:07:37

2

缺少一个逗号,您还可以使用以下方法:

$('#tblLoading').ajaxStart(function() { $(this).show(); }); 
$('#tblLoading').ajaxComplete(function() { $(this).hide(); }); 
19

我有类似的问题。为了解决我的问题,我用.html替换了beforeSend部分中的.text,并创建了一个html标记以插入到保存我的状态的元素中。成功函数并没有取代由.text()函数创建的内容,但它取代了由.html()函数创建的内容。

$.ajax({ 
    url: "/answer_checker.php", 
    global: false, type: "POST", 
    data: ({...clipped...}), 
    cache: false, 
    beforeSend: function() { 
    $('#response').html("<img src='/images/loading.gif' />"); 
    }, 
    success: function(html) { 
    $('#response').html(html); 
    } 
}