创建一个唯一的 URL 用于链接到从数据库中提取的数据

Create a unique URL for linking to data pulled from a database

是否可以为从数据库调用和显示的信息创建一个唯一的 URL 到 link?

[我正在努力阐明这个问题,因此欢迎提出任何修改建议。]

细节:我有一个页面,其中包含一个嵌入式地图和存储在单独数据库中的每个位置的相关信息。用户可以通过单击地图上的标记或使用侧边栏中的导航按钮来浏览这些位置。这两种情况都会放大标记并在侧边栏中显示有关位置的信息。所有这些工作正常,但因为信息只是放在 div 中,所以无论显示什么,页面的 URL 总是相同的。

我希望能够创建 links 并将其分享到 individual 位置,打开时会显示地图中选择的点和边栏中显示的信息。

我使用了一个javascript函数来调用数据库中的信息。这是该代码的简化版本:

<a href="#" onClick='callMarker(markerNum);'>Click Me</a> 

function callMarker(markerNum) {
        var sql = new data.SQL({ user: 'me' });
        var sql_query = "SELECT * FROM map_name WHERE marker_id = " + markerNum;
        sql.execute(sql_query)
        .done(function(data) {
            console.log(data.rows[0]);

            var title = data.rows[0].title;

            // Displays the ID of the object in the external information box
            document.getElementById("title").innerHTML= data.rows[0].title;
}

由于数据库中的每个位置都标有唯一的 ID 号 (marker_id),因此似乎可以将其附加到当前 URL 的末尾以创建一个唯一的 URL 与每个点相关联。或者 ID 号 (marker_id) 可以以某种方式分配给 div ID 作为页面中的变量。我不确定该怎么做或者是否可行。

如有任何想法或方向,我们将不胜感激。我一直在寻找很多不同的方法,但没有找到任何似乎可以解决这个问题的方法。

如果您不想在服务器上做任何事情来提供唯一的 url,您可以使用带有 urls 的客户端散列,格式为 /mymap#uniqueId。 url 的散列部分可在 javascript 中访问,如下所示:

window.location.hash

您甚至可以在用户在地图上四处点击时在位置上设置 属性。因此,在您的 callMarker 函数中,您可以执行以下操作:

if(history.pushState) 
    history.pushState(null, null, '#myhash');      
else 
     location.hash = '#myhash'; 

在较新的浏览器中,第一种方法避免了硬刷新。

您可以在页面加载事件中获取此值以在地图和侧边栏信息上呈现适当的点。