2017-04-21 134 views
0

我使用javascript從瀏覽器中檢索url參數並將其傳遞給運行sockets.io的服務器。它的工作原理與預期的完全相同,但我希望在不需要問號或等號的情況下獲取參數。傳遞沒有問號和等號的url參數?

而不是/?var=我想它是:/var-/var_

有沒有辦法做到這一點沒有服務器端的URL重寫的好辦法?

當前代碼:

var urlParam = location.search.split("var=")[1]; // get the url parameter http://localhost/?var=[some url parameter value] 

if (urlParam == null) { 
    socket.emit('newRoom'); 
} else { 
    socket.emit('urlParam', urlParam); 
} 

謝謝!

+0

你能分享一下你用來獲取url參數的代碼嗎? –

+0

發佈當前的代碼? – kawnah

+0

如何使用#? –

回答

2

當然可以抓取網址。

window.location.href返回url的完整路徑。您可以使用.split('/')

因此windows.location.href.split('/')會給你一個字符串數組,其中每個元素是url的不同部分。例如,在example.com/page/var1/var2上運行它會給你一個陣列["example.com", "page", "var1", "var2"].

請記住,你的服務器仍然需要知道如何將請求路由到example.com/page/var1/var2。因此,如果var1和var2是example.com/page的變量,那麼您的服務器需要知道服務於example.com/page。

+0

我認爲這是我在這裏忽略的一段邏輯..謝謝 – Dshiz

0
var urlParam = location.search.split("var=")[1]; 

var mapObj = { 
    "?":"", 
    "=":"-" 
}; 

urlParam = urlParam.replace(/(\?|=)/g, function (matched) { 
    return mapObj[matched]; 
});