0

我的脚本允许用户使用 AJAX 上传文件,该文件显示一条成功消息,然后淡出。但是,如果他们上传另一个文件(上传等工作正常),该消息将不会再次显示。

阿贾克斯

<script>
    $(document).ready(function() {
        $('#logo_save').click(function(){
            var image_name = $('#image_name').text();
             {
                  jQuery.ajax({
                   type: "POST",
                   url: "save_uploaded_logo.php",
                   data: 'id='+image_name,
                   cache: false,
                   success:function(response){
                       $('#new_header_preview').html(response.logo);
                       $('#logo_upload_success').html('Image Saved').fadeOut('slow');
                   }
                 });
             }
        }); 
    });
</script>

用于显示消息的表格部分

<table id="report_content_practice">
   <tr>
      <td id="upload_success" style="width:370px; vertical-align:middle">
         <span id="logo_upload_success">&nbsp;</span>
      </td>
   </tr>
</table>
4

4 回答 4

1
success:function(response){
    $('#new_header_preview').html(response.logo);
    $('#logo_upload_success').fadeIn().html('Image Saved').fadeOut('slow');
}
于 2013-11-12T16:34:37.370 回答
1

正如其他人所说,原因是在您的脚本第一次运行后,DOM 元素被隐藏了。您需要在运行淡入淡出之前再次显示该元素,否则您将尝试在具有 is 的元素上运行 fadeOut Opacity:0

正如我在评论中所说,在你的success函数运行show()之前调用你的 fadeOut。

$('#logo_upload_success').html('Image Saved').show().fadeOut('slow');

于 2013-11-12T17:29:03.023 回答
0

这是因为您正在淡出,$('#logo_upload_success')因此当您第二次加载 Ajax 时,此 DOM 元素的不透明度设置为 0,从而无法看到新消息。

于 2013-11-12T16:35:59.410 回答
0

您的 HTML 已经到位,这就是您看不到任何更改的原因。在 onclick 函数上,在发送 ajax 请求之前将 html 值设为空:

$('#new_header_preview').html("");$('#logo_upload_success').html("");
于 2013-11-12T16:37:51.173 回答