提问者:小点点

如何在滑块上重新加载更改后的图像


所以我的问题是,我似乎不明白为什么我的程序不会加载改变的图像。

对“/contours”的ajax调用触发了一个发生图像更改的flask app.route。 在那里,图像再次以相同的名称保存,因此旧版本被覆盖。 那部分正常工作。

下面是我的代码:

<script>
    document.getElementById("rangevalue_low").value = document.getElementById("thresh_low").value;
    document.getElementById("rangevalue_high").value = document.getElementById("thresh_high").value;

    function render() {
        let range_low = document.getElementById("rangevalue_low").value;
        let range_high = document.getElementById("rangevalue_high").value;

        $.ajax({
            url: "/Contours",
            data: {
                'imagePath': 'static/images/kittens/kittens-2.jpg',
                'thresh_low': range_low,
                'thresh_high': range_high
            },
            method: 'POST'
        })
        .done(() => {
            $("#outlined_image").attr("src", "");


            setTimeout(() => {
                let source = "../static/output/result.jpg";
                $("#outlined_image").attr({"src": source, "class": "img_result"});
            }, 2000)

        })
    }
</script>

修改图像和调用render-function的触发是有效的,但是由于某种原因,图像并没有更新,而是始终保持相同的状态,即使到图像的路径现在指向一个新的图像。

提前感谢您的任何帮助。


共1个答案

匿名用户

这很可能是一个缓存问题,因为尽管映像的内容发生了变化,但是URI是一样的。

要强制重新加载图像,您可以在URL上附加一个时间戳:

let source = "../static/output/result.jpg?" + (new Date()).getTime();