2016-10-07 4 views
2

最近、クリーンな/ SEOフレンドリなURLを使用するようにサイトを切り替えると、クエリ文字列パラメータを取得する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); 
} 

あなただけgetQueryVariable("image")を呼び出し、「awesome.jpg」を返すことができるようthisのようなものにうまく働いた:

以前私はこの機能を使用していました。

私は例えば、現在のURLから関連するパラメータを試してみて、つかむために indexOf();機能でプレーしてきた

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' 
関連する問題