2011-07-03 6 views
10

私はjavascriptを使用しています。私が持っているURL文字列を受け取り、ホスト、パス、およびクエリ引数などのコンポーネントに分割したいと考えています。URLをコンポーネントに分割する

クエリ引数の1つに到達するには、これを実行する必要があります。クエリ引数は、それ自体がURLであり、元のURL文字列でエンコードされます。

Javascriptでこれを行う簡単な方法があるはずです。おそらく、このようなもの:

var what_I_Want = url("http://www.domain.com?queryArg1=somequeryargument").getQueryArgumentValue("queryArg1"); 

答えて

14

parseUri機能は、あなたが

を必要と全力を尽くします編集 別の方法としては、のさまざまな部分のために新しく作成されたaオブジェクト上で、あなたとアクセスプロパティのget the DOM to do the hard workすることができますURL。あなたは、クエリのアップがオンに基づいて、分割でき

a = "http://www.domain.com?queryArg1=somequeryargument"; 
query = a.substring(a.indexOf('?')+1); 

+0

クエリー引数のDOMソリューションの作業を行いまたはそれだけで特定のキーと値のペアにそれを破壊し、それらを復号化することなく、全体クエリ文字列を返すのに十分な具体的な取得のでしょうか? –

+0

DOMソリューションはクエリ文字列全体のみを返します。それらの結果をループし、キーとvalのペアを与える "="の上の 'split()'を実行することができます。あなたが探しているものに対してキーをテストし、ループから抜け出してvalを返します。 – Tak

+0

パセリは非常によく働いた –

1

おそらくJavaScriptでクエリ文字列を取得することなく、簡単な方法を行うための最大の方法は、ただの線に沿って何かを使用することであろうではありません&のもので、もう一度、=あなたが必要とするどのようなパラメータでも得ることができます。これはそのように非常に有用ではない場合

申し訳ローテク方式のビット:P

EDIT: ちょうど(ソートのような)でのあなたのためのURLクエリパラメータを取得するための迅速な小さなJavaScriptオブジェクトを書きましたあなたの例。 Chromeのみでそれをテストしたが、理論的にはそれが動作するはずです:)

//Quick and dirty query Getter object. 
function urlQueryGetter(url){ 
    //array to store params 
    var qParam = new Array(); 
    //function to get param 
    this.getParam = function(x){ 
    return qParam[x]; 
    } 

    //parse url 
    query = url.substring(url.indexOf('?')+1); 
    query_items = query.split('&'); 
    for(i=0; i<query_items.length;i++){ 
     s = query_items[i].split('='); 
     qParam[s[0]] = s[1]; 
    } 

} 

//Useage 
var bla = new urlQueryGetter("http://www.domain.com?queryArg1=somequeryargument&test=cheese"); 
alert(bla.getParam('test')); 
1

JavaScriptでは、あなたがのparamsのためのスプリットを()を使用して、プロトコルやドメインの場所のオブジェクトを使用することによってこれを行うことができます - カールが

を示唆したように

徳がすでにプロジェクトでのjQueryを使用している場合は、より簡単に解析しますjQueryプラグインもあり

を示唆したとしても、あなたがparseUriを使用することができます:https://github.com/allmarkedup/jQuery-URL-Parser#readme

例:

$.url('http://allmarkedup.com?sky=blue&grass=green').param('sky'); // returns 'blue' 
2
<script type="text/javascript" language="javascript"> 
newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname; 
</script> 

Hope this will help.. 
関連する問題