2017-04-21 11 views
0

私はjavascriptを使用してブラウザからurlパラメータを取得し、それをsockets.ioを実行しているサーバに渡します。意図どおりに動作していますが、疑問符や等号を必要とせずにパラメータを取得したいと考えています。代わりに/?var=URLパラメータを疑問符と等号なしで渡しますか?

私はそれがしたいと思います:/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

確かにURLを取得することは可能です。

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]; 
}); 
関連する問題