我正在创建一个ajax网站,我正在使用jquery的来加载页面。当您点击导航栏中的链接时,它可以正常工作并加载新页面,但是当您重新加载时,您会丢失刚才的页面。因此,如果我正在查看我的帐户,并重新加载该页面,它会将我发回主页。这很容易解决,但真正的问题是当我搜索或我正在加载配置文件。我的搜索网址是http://mysite.com/#!/search/option1/query here/
。我在这里做了一个简单的正则表达式,但是当我尝试使用我正在使用的代码的正则表达式时,它们不会混合。我的个人资料网址是这样的http://mysite.com/#!/profile/person here/
。我如何制定正则表达式来适应所有这些?我需要筛选出第一个选项(/ account /,/ search /,/ newsfeed /),根据该页面加载页面,然后根据第二个和第三个选项加载内容。继承人的代码我使用:JavaScript复杂的URL正则表达式
var oldLoc = window.location.hash.replace(/^#\!/,"");
var m = /(\/search\/)([^\/]+\/)([^\/]+)/.exec(oldLoc);
if (oldLoc == '/newsfeed/') {
$('#reload_section').load('newsfeed.php');
$('.nav_itm.home').removeClass('active');
$('.nav_itm.account').removeClass('active');
$('.nav_itm.newsfeed').addClass('active');
_currentScreen = 4;
} else if (oldLoc == '/account/') {
$('#reload_section').load('account.php');
$('.nav_itm.home').removeClass('active');
$('.nav_itm.account').removeClass('active');
$('.nav_itm.newsfeed').removeClass('active');
_currentScreen = 5;
}/*else if (m[1]) {
$('#reload_section').load('search.php');
$('.nav_itm.home').removeClass('active');
$('.nav_itm.account').removeClass('active');
$('.nav_itm.newsfeed').removeClass('active');
_currentScreen = 6;
if (m[2] == 'option1/') { // Option1 Search
searchMenuId = 1;
$('.cquery .option1').addClass('active');
$('.cquery .option2').removeClass('active');
$('div.live h1 b').text(m[2]);
} else if (m[2] == 'option2/') { // Option2 Search
searchMenuId = 2;
$('.cquery .option1').removeClass('active');
$('.cquery .option2').addClass('active');
$('div.live h1 b').text(m[2]);
}
} */else {
$('#reload_section').load('main.php');
$('.nav_itm.home').addClass('active');
$('.nav_itm.account').removeClass('active');
$('.nav_itm.newsfeed').removeClass('active');
_currentScreen = 1;
}
该代码工作完美上固定的网页网址像http://mysite.com/#!/newsfeed/
因为没有选择。如果甚至有可能,我该如何修改它来处理正则表达式。我不确定但是我问得太多了?我宁愿不使用PHP的URL路由,但如果JavaScript无法做我想要的,我可能不得不。非常感谢你提供任何帮助。我知道我在这里问很多。
谢谢,我一直在寻找这样的一段时间,但不可能对谷歌 – 2012-03-03 16:20:49
发现任何所以我修改了它为我所用,但它给我的错误:'类型错误:“未定义”是不是一个函数(评估'window.location.indexOf(“#!”)')'。这是这行:'var str = window.location;'。我如何解决这个问题? – 2012-03-03 17:02:57
@JosephTorraca - 这可能是因为window.location不是一个字符串对象,所以它没有'.indexOf()'方法。你可以使用'window.location.href'(这是一个字符串),或者你可以指定'var str = window.location.href;'并使用'str'作为你的初始变量。 – jfriend00 2012-03-03 17:07:18