javascript - 使用ajax加载html和相对路径

标签 javascript jquery ajax html web

当单击页面上的链接时,我使用 ajax 加载 html 文件。以下是所发生情况的简化版本:

links.click(function () {
    var href = $(this).attr("href");
    history.pushState(null, null, href);
    $.get($(this).attr("href"), function(data){
        $("#page").html(data)
    })
});

这很好用。然而,加载的.html文件包含大量具有相对路径的图像,如下:

<img src="smiley.gif">

因此,当加载文件时,页面文本没问题,但相关内容都没有正确加载。使用绝对路径创建图像可以解决我的问题,但是我需要它们与我当前的情况相关。

正如您所注意到的,我通过在点击事件函数中使用 history.pushstate 修改了地址栏。我假设加载的 url 会正确加载所有资源,因为 url 也被修改了。但是,它与上面的代码不同。

我该如何以优雅而简单的方式解决此问题?

最佳答案

您想要的是插入 base tag在生成的 html 中,指定所有相对路径的根目录应位于的位置。

因此,假设您的所有相对路径都应从 /assets 提供然后你加载/user/1/profile ,相对图像:<img src="nyan.gif" />将在 /user/1/profile/nyan.gif 进行检查并将被返回无效。但是,如果您插入 <base href="/assets">在 head 标签中,图像将被正确提供

关于javascript - 使用ajax加载html和相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33487945/

相关文章:

javascript - JQuery UI 将多组单选按钮转换为 slider

javascript - 有没有办法从 Google Apps 脚本环境访问 Google Data API?

javascript - 使javascript引用变量成为值变量?

javascript - 如何在 php 循环创建的表单中分配变量或使用数字?

javascript - jQuery UI - 在外部单击时关闭对话框

javascript - 在 JQuery .each 中使用 $(this)

javascript - 如何通过 AJAX post 请求将两个依赖下拉列表的值发送到 Django View ?

javascript - 加载资源失败:net::ERR_EMPTY_RESPONSE http://test.com

javascript - 计算图像比率并将值应用于查询字符串

javascript - 通过 JS 使用 Azure ML Web 服务