我正在創建一個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