2011-10-19 8 views
5

すべて、Dojoでクエリー・ストリングを取得する

ユーザーは、「inquirytype」というクエリー・ストリングを含むURLにぶつかります。いくつかの理由から、私はこのクエリー・ストリングをjavascript(Dojo)で読み込み、その値を変数に保存する必要があります。私はこれを行う方法を見つけるためにかなりの量の研究を行ってきましたが、いくつかの可能性を発見しましたが、スクリプトのどこかでハードコードされていないクエリ文字列を実際に読み取ることはできません。

あなたが知っている例やアイデアは、私にここで助けてくれますか?

ありがとうございます!

答えて

9

あなたは

function getUrlParams() { 

    var paramMap = {}; 
    if (location.search.length == 0) { 
    return paramMap; 
    } 
    var parts = location.search.substring(1).split("&"); 

    for (var i = 0; i < parts.length; i ++) { 
    var component = parts[i].split("="); 
    paramMap [decodeURIComponent(component[0])] = decodeURIComponent(component[1]); 
    } 
    return paramMap; 
} 

は、その後、あなたがある/hello.php?id=5&name=value

var params = getUrlParams(); 
var id = params['id']; // or params.id 

道場はhttp://dojotoolkit.org/reference-guide/dojo/queryToObject.htmlを提供されたURLからIDを抽出するために、次の操作を行うことができCan a javascript attribute value be determined by a manual url parameter?道場なしlocation.search使用してURLからパラメータにアクセスすることができます私の単純な実装より少しスマートで、重複したキーから配列を作成します。

var uri = "http://some.server.org/somecontext/?foo=bar&foo=bar2&bit=byte"; 
var query = uri.substring(uri.indexOf("?") + 1, uri.length); 
var queryObject = dojo.queryToObject(query); 

//The structure of queryObject will be: 
// { 
// foo: ["bar", "bar2], 
// bit: "byte" 
// } 
+1

1 - ooft – DefyGravity

+0

含むため

require([ "dojo/io-query", ], function (ioQuery) { GET = ioQuery.queryToObject(decodeURIComponent(dojo.doc.location.search.slice(1))); console.log(GET.id); }); 

+0

あなたはURIを定義していますDojoにブラウザURLから呼び出す方法があるかどうか、あるいは単純なjavascriptを実行する必要があるかどうか教えてください。 – Friendy

0

dojo 0.9以降、より良いオプションqueryToObjectがあります。

dojo.queryToObject(query) 

は、私はきれいな答えと思われるもので、このsimilar questionを参照してください。

それはIO-クエリでアクセスの新しい道場で
0

道場のクエリ文字列パラメータ 『「を検索する際にGoogleの最初の結果である』は、decodeURIComponent
関連する問題