2011-10-19 63 views
5

都得到查詢字符串,使用Dojo

將用戶對包含一個名爲「inquirytype」查詢字符串的URL被擊中了。出於各種原因,我需要使用JavaScript(Dojo)讀取此查詢字符串並將其值保存到變量中。我已經做了大量的研究,試圖找到如何做到這一點,並且我發現了一些可能性,但是他們中沒有一個似乎實際上讀取了腳本中某處未硬編碼的查詢字符串。

你知道的任何示例或想法都可以幫助我嗎?

謝謝!

回答

9

可以使用location.search從URL訪問參數,而不道場Can a javascript attribute value be determined by a manual url parameter?

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; 
} 

那麼你可以做以下從URL /hello.php?id=5&name=value

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

Dojo提供http://dojotoolkit.org/reference-guide/dojo/queryToObject.html這是提取ID比我的簡單實現更智能一點,並且使用重複鍵創建陣列。

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包括decodeURIComponent – DefyGravity

+0

「這是谷歌的第一個結果的搜索時,‘道場的查詢字符串參數’ - ooft –

+0

您定義的URI本身在dojo,你可以告訴如果Dojo有一個方法來從瀏覽器URL調用它,或者我需要做簡單的javascript – Friendy

0

在新道場它與IO-查詢訪問:

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