使用AJAX进行调用时不要更改URL
Do not change URL when doing a call with AJAX
我正在使用jQuery $.ajax
创建一个网站,一旦我单击菜单图标,就会打开一个覆盖,并根据链接href
属性显示请求的内容。当我这样做时,网站的URL会更改为您单击的任何链接。例如,如果单击"about",则URL将为http://example.com/#about
。
我不希望这样,因为当你关闭覆盖时,网站会像http://example.com/#about
一样,如果你以这种方式进入网站,关于页面不会打开,甚至覆盖也不会打开。我想知道是否有一种方法可以使URL不变,并且始终为http://example.com
。
这是我当前的jQuery代码:
$(function() {
$('.w-container .w-nav-menu a').click(function() {
var $linkClicked = $(this).attr('href');
document.location.hash = $linkClicked;
var $pageRoot = $linkClicked.replace('#', '');
if (!$(this).hasClass("active")) {
$(".w-container .w-nav-menu a").removeClass("active");
$(this).addClass("active");
$.ajax({
type: "POST",
url: "load.php",
data: 'page='+$pageRoot,
dataType: "html",
success: function(msg){
if((msg))
{
$('.content').html(msg);
$('.content').hide().fadeIn();
}
}
});
}
else {
event.preventDefault();
}
});
var hash = window.location.hash;
hash = hash.replace(/^#/, '');
switch (hash) {
case 'products' :
$("#" + hash + "-link").trigger("click");
break;
case 'about' :
$("#" + hash + "-link").trigger("click");
break;
case 'storelocator' :
$("#" + hash + "-link").trigger("click");
break;
case 'media' :
$("#" + hash + "-link").trigger("click");
break;
case 'faq' :
$("#" + hash + "-link").trigger("click");
break;
case 'contact' :
$("#" + hash + "-link").trigger("click");
break;
}
});
将event.preventDefault();
移动到else
块之外。
此外,拆下document.location.hash = $linkClicked;
线路。
$(function() {
$('.w-container .w-nav-menu a').click(function() {
var $linkClicked = $(this).attr('href');
var $pageRoot = $linkClicked.replace('#', '');
if (!$(this).hasClass("active")) {
$(".w-container .w-nav-menu a").removeClass("active");
$(this).addClass("active");
$.ajax({
type: "POST",
url: "load.php",
data: 'page='+$pageRoot,
dataType: "html",
success: function(msg){
if((msg))
{
$('.content').html(msg);
$('.content').hide().fadeIn();
}
}
});
}
event.preventDefault();
});
var hash = window.location.hash;
hash = hash.replace(/^#/, '');
switch (hash) {
case 'products' :
$("#" + hash + "-link").trigger("click");
break;
case 'about' :
$("#" + hash + "-link").trigger("click");
break;
case 'storelocator' :
$("#" + hash + "-link").trigger("click");
break;
case 'media' :
$("#" + hash + "-link").trigger("click");
break;
case 'faq' :
$("#" + hash + "-link").trigger("click");
break;
case 'contact' :
$("#" + hash + "-link").trigger("click");
break;
}
});
document.location.hash = $linkClicked;
这一行使您的url发生更改也可以使用preventDefault()
来阻止链接单击更改页面的url
使用e.preventDefault();
删除所有哈希更改代码
$('.w-container .w-nav-menu a').click(function(e) {
e.preventDefault();
相关文章:
- Ajax URL路径未替换当前URL
- 使用PHP和ajax传递URL不太正常的变量
- 如何检查这个代码点火器php函数是否工作,该函数是否在ajax url中使用
- Ajax对web URL的调用导致javascript错误
- 如何在所有ajax调用中向URL添加参数
- 使用Ajax的后退按钮历史记录,URL中没有散列
- XMLHttpRequest.open()AJAX中的参数url
- (Ajax)在不重新加载内容的情况下登录页面url
- ajax外部url加载完成后调用jquery函数
- 通过AJAX/PHP将数据发送到点击的url
- 当jQuery ajax请求中包含#时,URL中断
- ajax将值返回到url
- AJAX发布请求使用qwest.js到goo.gl url shortener api
- 使用GET方法通过AJAX成功提交表单后更改url
- 有条件地创建ajax url参数以与jQuery Validate一起使用
- 我的 AJAX 请求对象无法正确解析 URL 的协议部分
- 管理 AJAX 中开放函数的 URL 的规则
- 用url ajax传递参数到控制器
- 将utf8字符串转换为URL (ajax)
- 动态PHP URL Ajax加载URL