2011-10-19 14 views
5

Tümü,Dojo ile Querystring'i edinin

Kullanıcılar, "inquirytype" adında bir sorgulama listesi içeren bir URL'ye karşı isabet edecekler. Bir dizi nedenden ötürü, bu sorgulamada javascript (Dojo) ile okumalı ve değerini bir değişkene kaydetmem gerek. Bunun nasıl yapılacağını bulmaya çalışırken çok miktarda araştırma yaptım ve birkaç olasılık keşfettim, ancak hiçbiri aslında senaryoda bir yere kodlanmamış bir sorgulamada okuyor gibi görünmüyor.

Bunun hakkında bildiğiniz örnekler veya fikirler bana yardımcı olabilir mi?

Teşekkürler!

cevap

9

Sen

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

Sonra ise /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 sağlar url id ayıklamak için aşağıdaki yapabileceğini Can a javascript attribute value be determined by a manual url parameter? Dojo'nun olmadan location.search kullanarak url parametreleri erişebilir basit uygulamamdan biraz daha akıllı ve yinelenen anahtarların dışında diziler oluşturur.

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 'dojo sorgu dize parametreleri "ararken o google'ın ilk sonucudur' decodeURIComponent – DefyGravity

+0

dahil olmak üzere - Ooft –

+0

URI tanımladığınız dojo kendisi, dojo tarayıcı URL'den aramak için bir yöntem var mı, ya da basit javascript – Friendy

0

Dojo 0.9'dan beri, daha iyi bir seçenek var, queryToObject.

dojo.queryToObject(query) 

Temiz bir cevap olduğunu düşünüyorum bu similar question bakın. Yeni dojoda olarak

0

o io-sorgu ile erişilen var:

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