2017-06-21 26 views
-1

URLパラメータを取得するために、次のコードを使用します。decodeURI/URLの問題で%20を置き換えます。

<script type="text/javascript"> 
function getUrlVars() { 
var vars = {}; 
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { 
vars[key] = value; 
}); 
return vars; 
} 
</script> 

<script type="text/javascript"> 
var url = window.location.protocol + "//" + window.location.hostname; 
</script> 

上記のコードのページは、別のページのリンクからアクセスします。そのリンクの中で私はニュースアイテムのIDとタイトルを渡しています。 上記のコードのページにURLのタイトルが読み込まれると、すべてのスペースの代わりに%20が表示されます。 これを読んだところ、私はdecodeURIまたはdecodeURIComponentを使用する必要があることがわかりました。私はいくつかの場所でこれをしようとし、ブラウザで結果を警告したが、私はURL内のタイトルから%20を取り除くように見えないので、明らかに私は右でそれをやっていないよ場所。

これが私の結果です....

http://PAGE URL HERE/NewsArchive.aspx?Story=New%20site%20launched&ID=17 

私は、私は何とかの/%正規表現20 /グラムを含める必要が信じている「 - 」変数の部分で置き換えるには、しかし、私は持っています正規表現の知識のない横に。

誰かが私に空白を描いているときに何をする必要があるのか​​を教えてもらえますか?私は似たような記事をいくつか見てきましたが、それは私の知識の低さを説明するものではありません。

また、SharePointで使用されているため、SharePoint Stack Exchangeにも投稿していますが、私にとってはうまくいきませんでした。

助けてください。

+1

を参照してください - https://stackoverflow.com/questions/12042592/decoding-url-parameters-with-javascript –

答えて

0

私はこの質問を理解しているかどうかはわかりませんが、パラメータを取得するだけのようですか? URLのパラメータを含むページでデベロッパーコンソール(Chromeのf12)を開いた場合は、window.locationと入力してオブジェクトのすべてのプロパティを表示できます。 window.location.hrefと入力すると、完全なURIが表示されます。これを簡単に分離するには、.splitを使用します。

window.location.href.split('?')[1]は、?文字の後にすべてを示します。 decodeUri(window.location.href.split('?')[1])を実行すると、通常の文字列を取得できます。

splitによって返される配列のインデックスがゼロであることに留意してください。

コメントに応じて編集: あなたが探している技術はhistory.replaceStateです。詳細はhereです。私は非常にスキミングを徹底的にお勧めします。

history.replaceState(null, "/NewsArchive.aspx", "Story=New-site-launched&ID=17") 
+1

'window.location.href.split( '?')[1]' == ' location.search.slice(1) ' – dandavis

+0

申し訳ありませんが私の質問は少しあいまいです。私がしたいのは、ページが読み込まれたときに、URLのパラメータをStory = New%20site%20launched&ID = 17 Story = New-site-launched&ID = 17 変更しようとしています。 theURL – Ian

+0

@Ian私は私の答えを更新しました。うまくいけばそれがあなたが探しているものです。 –

関連する問題