Jquery Ajax在获取数据的同时加载图像

时间:2011-07-07 14:34:09

标签: jquery ajax

我正在使用Jquery Ajax函数在点击事件中从数据库中获取数据。

此功能正常工作并显示数据。 但是加载数据需要时间,因此我想在获取数据的同时放置加载图像。 我用这种方法做了

<script type="text/javascript">
    jQuery(function($) {
        $(document).ready(function() {
            $("#imgs").hide();
            $(".letter").bind('click', function(){
                $("#imgs").fadeIn();
                var val = $(".letter").val;
                var site = '<?php echo site_url(); ?>';
                $.ajax({
                    url: site+'/wp-content/themes/premiumnews/newContent.php?letter='+$(this).html(), 
                    success:function(data){
                        $("#imgs").hide();
                        $("#content1").html(data);
                    }
                });
            });
        });
    });
</script>

当我点击按钮时,显示加载图像,但成功后图像应该消失,在我的情况下它仍然存在

我的代码错了吗?或者我使用了错误的方法?

4 个答案:

答案 0 :(得分:11)

这是我过去一直使用的:

$('#loading_div').hide().ajaxStart(function(){
    $(this).show();
}).ajaxStop(function() {
    $(this).hide();
});

答案 1 :(得分:2)

在$ .ajax()之前;打电话来做这个。在ajax调用之前用这个替换整个html。然后on onccess将整个html替换为您的内容。

$("#content1").html("<img style=\"margin-left: auto; margin-right: auto;\" src=\"ajax-loader.gif\" alt=\"Loading...\" title=\"Loading...\" />");

答案 2 :(得分:0)

从我可以告诉你的代码看起来很好。你确定正在调用成功函数吗?尝试将alert("")添加到success函数中,看看是否成功调用了它。如果没有,那就是你的问题。

答案 3 :(得分:0)

$("#report").live( "submit" , function(){
    // Add loading image until get the results
    $("#loading_div").html("<img style=\"margin-left: auto; margin-right: auto;\" src=\"ajax-loader.gif\" alt=\"Loading...\" title=\"Loading...\" />"); 

    var formdata = $(this).serialize(); // Get 
    $.post( "ajax_report.php", formdata, function( data ) {
    $("#results").html ( data ); // Add success data in '#results' element
    $("#loading_div").empty(); // Remove loading image on success
        });

        return false;
});

在页面中添加这些行。

<span id="loading_div"></span>
<span id="results"></span>
<form id="report" name="report" action="" method="post">
    <input name="firstname" value=""></input>
    <input name="middlename" value=""></input>
    <input name="lastname" value=""></input>
</form>