Javascript 如何在URL中使用带有hashtag的GET方法?

Javascript 如何在URL中使用带有hashtag的GET方法?,javascript,php,jquery,ajax,hash,Javascript,Php,Jquery,Ajax,Hash,例如:www.example.com#?id=10 到目前为止,我没有从$\u GET['id']中获得任何值。我试图用JavaScript从URL中删除标签,但什么也没发生: $(document).ready(function(){ $(window.location.hash).modal('show'); $('a[data-toggle="modal"]').click(function(){ window.location.hash.replace('#',

例如:
www.example.com#?id=10

到目前为止,我没有从
$\u GET['id']
中获得任何值。我试图用JavaScript从URL中删除标签,但什么也没发生:

$(document).ready(function(){
   $(window.location.hash).modal('show');
   $('a[data-toggle="modal"]').click(function(){
      window.location.hash.replace('#', '') = $(this).attr('href');
   });
});
我知道我可以使用ajax,但我不熟悉如何使用
GET
POST
。我正在尝试使用此锚
href

echo '<a  href="?id='.$row['id'].'" id="smallbtn" data-toggle="modal"
                          data-target="#small"  data-modal="small">';
echo';

并将其发送到URL,而不刷新页面。有可能做到这一点吗?

您似乎混淆了PHP和JavaScript,因为您显示的两个语句都来自于两个方面。所以你的问题不是很清楚

单击锚定链接时,浏览器会执行以下操作:

window.location = jQuery("#smallbtn").attr("href");
所以,如果这就是必须发生的事情(显然),你不必自己去做

现在,您提到了锚(#某物),但在您的示例中,您没有锚。如果您当前在URL中有一个锚,并且您正试图在用户单击链接时将其删除,那么这就是它的工作方式。再说一遍,没什么可做的了

如果“href”属性中可能有一个锚点,而您不想要它,那么您需要执行以下操作:

var href = jQuery("#smallbtn").attr("href"),
    parts = href.split("#");

window.location = parts[0]; // ignore anything after the '#'
但是,无论哪种方式,这都将强制重新加载新位置。根据您所说的,您希望“更改URL”(在位置栏中),但不希望重新加载页面。这是使用浏览器的。大多数人现在都支持该功能

window.history.pushState(
    {
        "html": html,
        "pageTitle": page_title
    },
    "",
    url);
定义页面HTML、标题和URL。它不会重新加载任何内容,也不会更改浏览器中的任何内容。这是你的责任。唯一会改变的是位置栏中的URL。它被设置为“url”

要更改浏览器标题,请执行以下操作:

document.title = page_title;
要更改浏览器HTML(假设您要更改整个页面),请执行以下操作:

不过,总而言之,您必须学习AJAX。坦率地说,它只是使用对象向您的PHP代码发送GET或POST请求,这些代码使用XML或JSON进行响应(XML与jQuery配合很好,它可以像DOM一样解析),并在调用回调时使用这些数据来更改客户端的标题、HTML等等。就这些


我认为最困难的部分不是AJAX本身,而是无论何时更改DOM,现有的
jQuery()
侦听器都无法自动确认新标记。这种动态DOM处理使“AJAX”变得复杂,而实际上它并不是AJAX的一部分(因为AJAX只是发送GET或POST并处理答案)。

window.location.hash.replace('#','')=$(This.attr('href')
这是一个无效的赋值,您应该在控制台中看到一个错误。此外,如果您希望发送一些内容而不刷新页面,则需要使用ajax,或者如果您不愿意了解该api,则必须通过设置iframe的src来完成。但是学习ajax会是一个更好的选择。可能是@PatrickEvans的复制品,从技术上讲,它不发送任何东西,只是更新URL。除非你说的是同一件事。我将如何用我的代码实现ajax?非常感谢。我肯定会研究ajax。还有一个问题,我如何在当前代码中正确地实现
replace('#','')
?这:
window.location.hash.replace('#','')=$(This.attr('href')@alexiswilket这就是我的第二个代码示例的内容。您获得
href
属性,从中删除任何
#..
,并将其余部分放在
窗口中。location
(即
部分[0]
)。如果您的
href
中没有任何
#…
,只需执行
window.location=href
即可。它将删除您在那里的任何哈希标记。非常感谢!在我的最新问题中,我将ajax post方法与php结合使用。问题是,即使是从ajax发送的,php也没有接收post方法数据。我知道,因为我检查了“网络”选项卡,一切正常。这是因为POST方法不更新或不是动态的吗?您需要在两侧的代码中发布一个新的stackoverflow问题,以便我们提供帮助。就这样,我不知道。
jQuery(body).innerHTML = html;