我正在输出使用相同<a>
的多个动态链接。我的AJAX调用加载了所有链接的内容,但URL始终显示第一个链接的ID。如何点击不同的链接,如何更改网址中的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'));
}
});
}
});
答案 0 :(得分:1)
这是解决方案......
$('.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'));
}
});
}
});
答案 1 :(得分:0)
您必须将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'));
}
});
}
});
on test.php
if($_GET[action] == "update"){
$id = $_GET['id'];
echo $id;
}
答案 2 :(得分:0)
我认为,您无法通过编程方式更改地址栏中的url链接,导致这违反了安全规则。 想象一下,你打开坏网站,显示你最喜欢的网页作为你最喜欢的帐户操作的银行页面,而且地址栏中的网址链接与银行的相同...所以你不会怀疑这不是真正的银行页。您在此页面上的操作可能导致您将凭据放弃到坏人手中。
您可以通过编程方式更改网址链接的哈希部分。 这里是关于hash fragment of url
的维基