Php 使用jQuery和AJAX定期更改背景图像src

Php 使用jQuery和AJAX定期更改背景图像src,php,jquery,ajax,image,background,Php,Jquery,Ajax,Image,Background,我试图让我的页面主体的背景图像每(大约)N秒改变一次。为此,我有一个PHP函数,当我使用AJAX调用它时,它会响应随机图像src。然后我用这个新生成的图片替换当前的身体背景图片src,但是我无法让它工作 这是密码,里面有什么错误吗 (function($) { var $body = $('body'); window.setInterval(function() { $.ajax({ url: 'http://localhost/so

我试图让我的页面主体的背景图像每(大约)N秒改变一次。为此,我有一个PHP函数,当我使用AJAX调用它时,它会响应随机图像src。然后我用这个新生成的图片替换当前的身体背景图片src,但是我无法让它工作

这是密码,里面有什么错误吗

(function($) {

    var $body = $('body');

    window.setInterval(function() {
        $.ajax({
            url: 'http://localhost/some_path/index.php?exec=getNewBkgImgSrc',
        }).done(function(data) {
            var newImage = new Image();
            newImage.onload = function() {
                $body.css('background-image', newImage.src);
            };
            newImage.src = data;
        });
    }, 5000);

})(window.jQuery);
还有PHP函数,它可以工作:

public function getNewBkgImgSrc() {
    echo CONTENT_URL_DIR.'/Wallpapers/wallpaper ('.rand(1, 20).').jpg';
}
这可能是因为我使用的是localhost吗?我可以想象,以前在本地开发时,我遇到过AJAX问题

编辑:一个线索可能是body元素的style属性在Firebug中不需要更改/设置。我还尝试了
$('body').first()
$(document.body)
并使用
url(“”
(在背景图像属性的值中))但也不起作用。不过,onload事件不会触发


感谢您的帮助。

如果您从PHP获取URL,为什么要创建新的图像对象?只需将body的背景图像属性设置为:

$body.css('background-image', "url('" + data + "')");
如果使用vanilla JS:

document.body.style.backgroundImage="url('" + data + "')";

请在此处查看该属性的正确格式:

可能需要缓存ajax调用。尝试将ajax调用的url属性更改为
“/some_path/index.php?exec=getNewBkgImgSrc&cb=”+((新日期).getTime())。

我对
var$body=$('body')不太了解


使用
$('body').css('background-image',newImage.src)

是的,我也尝试过使用url()和url(“”)以及url(“”),但都不起作用。我尝试了你的解决方案(直接放置URL),但它也不起作用:(我在你的解决方案的URL()中添加了简单的引号,现在它确实起作用了。我使用了一个图像来避免图像加载时出现白色闪烁。谢谢你的帮助。编辑:实际上只有vanilla js解决方案起作用。