2016-10-07 55 views
2

我最近已將我的網站切換爲使用乾淨/搜索引擎優化友好的網址,現在這些網址給我帶來了一些JavaScript函數,用於獲取查詢字符串參數。使用JavaScript從乾淨/ SEO友好的URL獲取查詢字符串參數

以前我一直在使用這個功能:

function getQueryVariable(variable) { 
var query = window.location.search.substring(1); 
var vars = query.split("&"); 
for (var i = 0; i < vars.length; i++) { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) { 
     return pair[1]; 
    } 
} 
return (false); 
} 

,類似的this對事物運行良好,你可能只需要調用getQueryVariable("image")並返回「awesome.jpg」。

我一直在玩的indexOf();功能,試圖從當前的URL抓取的相關參數,如:

var url = window.location.pathname; 
var isPage = url.indexOf("page") + 1; 

在試圖獲得「頁」參數的數組索引號,然後加1它移動到的值(?page=name > /page/name/)

JavaScript不是我的主要語言,所以我不習慣使用數組等,我試圖把它變成一個新的功能已經給我頭痛。

任何指針?

回答

2

怎麼這樣呢?它分割路徑,並保持數組的第一個元素偏移,因爲它確定鍵/值對。

function getPathVariable(variable) { 
 
    var path = location.pathname; 
 

 
    // just for the demo, lets pretend the path is this... 
 
    path = '/images/awesome.jpg/page/about'; 
 
    // ^-- take this line out for your own version. 
 

 
    var parts = path.substr(1).split('/'), value; 
 

 
    while(parts.length) { 
 
    if (parts.shift() === variable) value = parts.shift(); 
 
    else parts.shift(); 
 
    } 
 

 
    return value; 
 
} 
 

 
console.log(getPathVariable('page'));

+0

謝謝,這完全解決我的問題:) – MrLewk

0

這可以正式使用庫如router.js做,但我會去簡單的字符串操作:

const parts = '/users/bob'.split('/') 
const name = parts[parts.length - 1] // 'bob'