2013-12-19 15 views
10

あなたはJSONオブジェクトにJavascriptがjQueryのを使用してJSONにクエリ文字列を変換し、バッククエリ文字列へ

var queryStringToJSON = function (url) { 
    if (url === '') 
     return ''; 
    var pairs = (url || location.search).slice(1).split('&'); 
    var result = {}; 
    for (var idx in pairs) { 
     var pair = pairs[idx].split('='); 
     if (!!pair[0]) 
      result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || ''); 
    } 
    return result; 
} 

使用クエリ文字列を変換するための機能便利以下見つけることを願っています:現在のWindowsのクエリを取得するには

を文字列

var result = queryStringToJSON() // without any parameter 

は、カスタムクエリ文字列からJSONを取得するには:

var result = queryStringToJSON('?name=prem&age=30&HEIGHT=5.8') 

出力:{name:"prem", age:"30", height:"5.8"} //All keys are converted into small letters

あなたはJavaScriptで簡単な使用の標準的なオブジェクト操作をすることができ、あなたのクエリ文字列を操作するにはのjQueryのparam方法

$.param(result) 

を使用することができますURLに戻ってそれを変換するには再度$ .paramメソッドを使用する

result.age=35; 
delete result['name']; 
+3

あなたの質問は何ですか? –

+0

彼はちょうど他人を助けるために彼の役に立つ機能を掲示しました...だからここに質問はありません... –

+1

なぜ私は "質問"セクションでこれを見つけましたか? –

答えて

1

働く、しかし、あなたはurl || location.searchを使用した場合、あなたはif(url === '') return ''を削除する必要がありますか、それは代わりに...、のような別の方法として

var queryStringToJSON = function (url) { 
    url = url || location.search;// url or location.search 
    if (url === '') 
     return '';// return if url and location.search not found 
    // your remainig code 
} 
+0

これは特別なチェックです。 ''は文字列操作における特別な偽の値です。だから私はちょうど偽の値が空の文字列であるかどうかのチェックをしたいだけです。 –

+0

次に 'var pairs =(url || location.search).slice(1).split( '&');' –

1

次のようになります。

for (var idx in pairs) { 
    var pair = pairs[idx].split('='); 
    if (!!pair[0]) 
     result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || ''); 
} 

試してみてください。

result = pairs.reduce(function(a,b) { 
    var pair = b.split("="); 
    a[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || ''); 
    return a; 
},{}); 

同じ動作をしますが、ネイティブのjavascript関数であるreduce()を使用するとおそらく高速です。

+0

)の行に 'location.search'を使用しないでください。IE8をサポートする必要がある場合はpolyfillが必要です。ここでは:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce#Polyfill – Dave

関連する問題