7

请帮助我在 chrome 中调用 ajax 时无法显示加载图像?这是我的脚本

function ajx_load_image(category)
{
    $("#"+category+"-text-1 .loading").show(); // showing image

    $.ajax({
             type:'POST', 
             url: './img_load.php',
             data: {num_count:load_count,cat:category},
             async: false,

            success: function(data)
            {
                data=jQuery.trim(data);
                if(data != ''){                 
                    $("#"+category+"-text-1 .loading").hide();

                    $("#"+category+"-text-1 .items").append(data);
            }
            else{
                $('.next.browse.right.'+category).removeClass('disabled');                                      
            }

            }

        });
}

我的 html 文件

<div id="tamil-text-1" class="tab-content">
  <div class="tab-top-curve"><img src="images/tab-top-curve.jpg" width="700" height="19" /></div>
  <div class="tab-mid-curve"> <a class="prev browse left disabled tamil" name="tamil"></a>
    <!-- root element for scrollable -->
    <div class="loading"><img src='images/ajax-loader.gif' /></div>
    <div class="scrollable">
      <!-- root element for the items -->
      <div class="items"> </div>
    </div>
    <!-- "next page" action -->
    <a class="next browse right tamil" name="tamil"></a> </div>
  <div class="tab-top-curve"><img src="images/tab-bottom-curve.jpg" width="700" height="31" /></div>
</div>

我也在stackoverflow中访问过同样的问题,但我做不到。

任何帮助将不胜感激。

4

4 回答 4

1

我不确定,但这可能会有所帮助。尝试在$.ajaxStart()函数中显示图像并隐藏,$.ajaxComplete()因为当它成功时,它会迅速隐藏图像:

function ajx_load_image(category){

    $.ajax({
        type:'POST', 
        url: '/img_load.php', //<------------------here '.' single dot removed
        data: {num_count:load_count,cat:category},
        async: false,
        beforeSend: function(){
           $("#"+category+"-text-1 .loading").show(); // showing image
        },
        success: function(data){
        data=jQuery.trim(data);
        if(data != ''){                 
                $("#"+category+"-text-1 .items").append(data);
        }else{
            $('.next.browse.right.'+category).removeClass('disabled');                                      
        }

        },
        complete: function(){
            $("#"+category+"-text-1 .loading").hide();
        }

     });

}

更新:

您可以beforeSend : function(){}用来显示加载图像,complete: function(){}也可以用来隐藏加载图像。

于 2013-06-04T10:21:53.677 回答
1

你的 PHP 脚本返回了什么?

在这里根本不使用 AJAX 可能是个好主意。让您的 PHP 脚本输出二进制图像数据(例如使用 PHP 函数“imagepng”),并且不要忘记使用 PHP 的 header-function 将正确的内容类型(例如“image/png”)添加到响应头中。

然后不要使用 AJAX,而是使用 Image 对象:

var img = new Image();

img.onload = function() 
{ 
   // ... your code when image was loaded.
};

img.src = 'img_load.php?num_count=' + load_count + '&cat=' + category;

如果您想支持旧版浏览器,您还可以使用 document.createElement('img'); 创建图像元素;

于 2013-06-04T10:22:51.363 回答
1

function ajx_load_image(category) {

var imageLoader =  "#"+category+"-text-1";   
$(imageLoader +" .loading").show(); // showing image
$.ajax({
         type:'POST', 
         url: './img_load.php',
         data: {num_count:load_count,cat:category},
         async: false,

        success: function(data)
        {
            data=jQuery.trim(data);
            if(data != ''){                 
                $(imageLoader +" .loading").hide();

                $(imageLoader +" .items").append(data);
        }
        else{
            $('.next.browse.right.'+category).removeClass('disabled');                                      
        }

        }

    });

}

希望上面的代码会有所帮助。

仅在将其用于 jQuery 之前将其更改为 concat 传递参数值和静态字符串。

于 2013-06-04T10:48:23.187 回答
0

似乎您对图像路径和请求类型有问题。要解决问题:

  1. 将图像放入您的代码所在的同一目录中,或使用完整的 URL 作为图像路径。
  2. 然后设置 async: true。

希望这能解决问题,因为有时 chrome 不支持单点路径。

于 2013-12-17T05:46:19.700 回答