在 Ajax 之后,调用 url 中的数据 ID 不会改变


After Ajax call data-id in the url doesn't change

我正在输出多个使用相同<a>的动态链接。我的 AJAX 调用加载所有链接的内容正常,但 URL 始终显示第一个链接的 ID。如何让它在单击不同链接时更改 url 中的 id?

$string .= '<a class="hrefid" data-id="'.$name["id"].'" href="#link">'.$name["name"].'</a>'.
<div id="content"></div>
$('.hrefid').on('click', function (e) {
    var load = $(e.target).attr("href");
    if(load == "#link") {
        $.ajax({
            type: 'post',
            url: "/page/test/"+$(this).parents("[data-id]").attr("data-id"),
            complete: function (event) {
                $("#content").contents().remove();
                $("#content").append(event.responseText);
                history.replaceState({}, "", "link"+$('[data-id]').first().attr('data-id'));
            }
        });
    }
});

这是解决方案...

$('.hrefid').on('click', function (e) {
var $this = $(this);
var load = $(e.target).attr("href");
if(load == "#link") {
    $.ajax({
        type: 'post',
        url: "/page/test/"+id,
        complete: function (event) {
            $("#content").contents().remove();
            $("#content").append(event.responseText);
            history.replaceState({}, "", "link" + $this.attr('data-id'));
        }
    });
}
});

你必须将 id 值传递给 jquery。将值传递给 jquery 后,您需要告诉 url 将传输数据的文件。

$('.hrefid').on('click', function (e) {
    var load = $(e.target).attr("href");
    var id = $('#your input id').val();
    if(load == "#link") {
        $.ajax({
            type: 'post',
            url: "/page/test.php?action=update&id="+id,
            complete: function (event) {
                $("#content").contents().remove();
                $("#content").append(event.responseText);
                history.replaceState({}, "", "link"+$('[data-id]').first().attr('data-id'));
            }
        });
    }
});

测试中.php

if($_GET[action] == "update"){
     $id = $_GET['id'];
     echo $id;
}

我认为,您无法以编程方式更改地址栏中的 url 链接,因为这违反了安全规则。想象一下,您打开了错误的网站,它显示的页面与您最喜欢的帐户操作银行页面完全相同,而且地址栏中的 url 链接与银行的相同......因此,您不会怀疑这不是真正的银行页面。您在此页面上的操作可能会导致将您的凭据交给坏人。

您可以通过编程方式更改 url 链接的哈希部分。这里维基关于网址的哈希片段