Javascript 如何防止规范URL';s
我在Javascript 如何防止规范URL';s,javascript,php,html,Javascript,Php,Html,我在home.php上有一个锚定链接,链接如下: <a href='#?id=$thought_id' class='toggle-comment' data-id='$thought_id' '> Comments ($num_of_comments) </a> 但我现在得到的是: localhost/home.php#?id=211 我看到了一个类似的问题:但是,在应用了最佳答案后,我仍然得到了相同的结果。我在profile\u page.php上也有完全相同
home.php
上有一个锚定链接,链接如下:
<a href='#?id=$thought_id' class='toggle-comment' data-id='$thought_id' '> Comments ($num_of_comments) </a>
但我现在得到的是:
localhost/home.php#?id=211
我看到了一个类似的问题:但是,在应用了最佳答案后,我仍然得到了相同的结果。我在profile\u page.php
上也有完全相同的锚定链接,它在那里工作得非常好
锚定链接不打算去任何地方,单击后,它会动态放大其下方的div,显示注释
编辑:
$(function() {
$("a.toggle-comment").on("click", function(event) {
// prevents browser to go to href's #
event.preventDefault();
// uses Jquery's data() function to get comment id from link's data-id attribute
var id = $(this).data('id');
// get element by id and toggle display
var ele = document.getElementById("toggleComment" + id);
$(ele).toggle();
});
});
锚链如何工作:
$(function() {
$("a.toggle-comment").on("click", function(event) {
// prevents browser to go to href's #
event.preventDefault();
// uses Jquery's data() function to get comment id from link's data-id attribute
var id = $(this).data('id');
// get element by id and toggle display
var ele = document.getElementById("toggleComment" + id);
$(ele).toggle();
});
});
echo”“代码>
思想中的每个新注释,另一个div是echo'd
$(function() {
$("a.toggle-comment").on("click", function(event) {
// prevents browser to go to href's #
event.preventDefault();
// uses Jquery's data() function to get comment id from link's data-id attribute
var id = $(this).data('id');
// get element by id and toggle display
var ele = document.getElementById("toggleComment" + id);
$(ele).toggle();
});
});
编辑2:
$(function() {
$("a.toggle-comment").on("click", function(event) {
// prevents browser to go to href's #
event.preventDefault();
// uses Jquery's data() function to get comment id from link's data-id attribute
var id = $(this).data('id');
// get element by id and toggle display
var ele = document.getElementById("toggleComment" + id);
$(ele).toggle();
});
});
与Rocki在聊天中得出结论。问题是我定义了两次JavaScript,一次在home.php
的源代码中,一次在functions.js
中,后者也在home.php
的头中。从源代码中删除了脚本,代码开始运行。使用
<a href='/#?id=$thought_id' class='toggle-comment' data-id='$thought_id' '> Comments ($num_of_comments) </a>
相反(添加/在url之前)所有#
后面的内容都被解释为散列片段,而不是发送到服务器。您的浏览器更改当前页面的哈希片段
RFC2396:统一资源标识符(URI):通用语法
字符“#”被排除,因为它用于分隔URI
来自URI引用中的片段标识符(第4节)
我已经尝试过了,但出于某种原因,当我单击链接时,它会将我注销并发送到index.php
。因此,您正在使用其他javascript修改某些内容,因为url通常就是这样工作的!是的,如上所述,当点击链接时,它下面的div将展开。我已经使用JavaScript实现了这一点,并将更新我的问题以显示我的JavaScript。很抱歉反应太晚。我仍然无法理解为什么这个问题发生在一个页面而不是另一个页面上,那里有完全相同的代码?profile\u page.php
是否包含在index.php
中?浏览器在地址栏中显示的内容很重要。对不起,您所说的包含在index.php
中是什么意思?另外,index.php
和home.php
的唯一链接是,当用户成功登录时,它会将他们带到home.php
(标题(“Location:home.php”);
)许多php应用程序使用index.php将请求发送到正确的处理程序(Dispatcher/Router模式)。简化示例:switch($\u GET('site')){case'home':include('home.php');break;…}
Hmm,我真的不知道该说什么,这是我第一次遇到URL路由和分派。另外,我不知道您是否在问我是否在index.php
中使用了这两种方法。这与我的.HTACCESS
文件有关吗?