Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jquery更新div背景元素_Php_Jquery_Css_Html_Background - Fatal编程技术网

Php jquery更新div背景元素

Php jquery更新div背景元素,php,jquery,css,html,background,Php,Jquery,Css,Html,Background,好吧,我不知道该怎么办,老实说,我有点迷路了。我试图做的是通过jQuery将一个文件上传到站点,并将其推送到PHP,然后PHP会删除原始图像文件,制作一个名为header.jpg的副本,并将其推送到需要的地方。那部分工作没有问题。这里的问题是,如果header.jpg图像是背景,我将如何更新div元素 注意:无论什么,img都将始终为header.jpg,但它需要由浏览器重新缓存,并在不刷新页面的情况下输出给用户 下面是header div的布局 <div id="headerEmpty"

好吧,我不知道该怎么办,老实说,我有点迷路了。我试图做的是通过jQuery将一个文件上传到站点,并将其推送到PHP,然后PHP会删除原始图像文件,制作一个名为header.jpg的副本,并将其推送到需要的地方。那部分工作没有问题。这里的问题是,如果header.jpg图像是背景,我将如何更新div元素

注意:无论什么,img都将始终为header.jpg,但它需要由浏览器重新缓存,并在不刷新页面的情况下输出给用户

下面是header div的布局

<div id="headerEmpty"></div>
         <div id="pageName">
             <h2><?php echo $pageName; ?></h2>
         </div>
         <?php if ( $_SESSION['signed_in'] == true ) { ?>
         <div id="header" style="background-image:url(uploads/header.jpg);">
             <span class="edit" fn="header">
                 <img src="uploads/icon/16/018.png" />
             </span>
             <div class="fn_menu" style="display:none;"></div>
         </div>
         <?php } else { ?>
         <div id="header"></div>
         <?php } ?>

这里是jquery位,它显示loader并自动启动上传过程

$('#photoimg').live('change', function() { 

        $("#preview").html('');
        $("#preview").html('<img src="uploads/icon/16/ajax-loader.gif" alt="Uploading...."/>');
        $("#imageform").ajaxForm(
        { 
        target: '#header',
        success : function(data) {
        $("#header").html(data).fadeIn('fast');
        }           
        }).submit();
     });
$('#photoimg').live('change',function(){
$(“#预览”).html(“”);
$(“#预览”).html(“”);
$(“#imageform”).ajaxForm(
{ 
目标:“#标题”,
成功:功能(数据){
$(“#header”).html(data.fadeIn('fast');
}           
}).submit();
});

如果要更新图像,请更改其来源。您可以将时间戳附加到源,使其不会来自浏览器的缓存。在PHP中,这类似于:

<div id="headerEmpty"></div>
         <div id="pageName">
             <h2><?php echo $pageName; ?></h2>
         </div>
         <?php if ( $_SESSION['signed_in'] == true ) { ?>
         <div id="header" style="background-image:url(uploads/header.jpg?_=<?php echo time(); ?>);">
             <span class="edit" fn="header">
                 <img src="uploads/icon/16/018.png" />
             </span>
             <div class="fn_menu" style="display:none;"></div>
         </div>
         <?php } else { ?>
         <div id="header"></div>
         <?php } ?>
您还可以使用PHP输出
#header
元素,并使用
replaceWith()
而不是
.html()

这假设您的PHP输出现在如下所示:

     <div id="header" style="background-image:url(uploads/header.jpg?_=1234567890);">
         <span class="edit" fn="header">
             <img src="uploads/icon/16/018.png" />
         </span>
         <div class="fn_menu" style="display:none;"></div>
     </div>


我知道使用时间戳、日期和其他任何东西。image uploads/header.jpg不会在页面上更新,它会通过AJAX在服务器上更新,并强制新副本重写原始副本。但是,页面上有0个刷新,导致图像仍然保留在那里,因为没有刷新时间戳是无用的,因为页面没有刷新来更新图像timestamp@Cl“我添加了一些如何将时间戳应用于
背景图像的示例。谢谢您的示例,但我仍然无法使其正常工作。比如说,有没有更简单的方法来代替使用div来更新src?
    success : function(data) {
        $("#header").replaceWith(data).fadeIn('fast');
    }  
     <div id="header" style="background-image:url(uploads/header.jpg?_=1234567890);">
         <span class="edit" fn="header">
             <img src="uploads/icon/16/018.png" />
         </span>
         <div class="fn_menu" style="display:none;"></div>
     </div>