2012-01-23 3 views
1

querystring 매개 변수가있는 절대 URL을 포함하는 문자열이 주어지면 JavaScript 및/또는 MooTools를 사용하여 매개 변수의 값을 대체하는 가장 쉬운 방법은 무엇입니까?mooTools로 쿼리 문자열의 값을 변경하려면 어떻게해야합니까?

// Change this 
'/foo/bar?frob=123456789' 

// Into this 
'/foo/bar?frob=abcdefg' 

편집

URL은 현재 윈도우의 location 없습니다. 문자열을 포함하는 변수입니다. 이 문자열을 조작하고 싶습니다.

+1

http://mootools.net/docs/more/Types/String.QueryString 비록 문자열로 처리된다면, 이것은 어떤 라이브러리와도 거의 관련이 없습니다. –

답변

0

페이지를 다시로드하지 않고이 작업을 수행하려는 경우에는 웹 브라우저 보안 모델의 일부입니다. 당신은 페이지를 다시로드 괜찮다면, 고려 :

location.href='http://example.com/foo/bar?frob=baz' 

대안을 다시로드하지 않고 이것은이다 http://example.com/foo/bar?frob=123456789#myhash

에 URL을 변경하는 예에 location.hash

location.hash = 'myhash' 

을 사용하고 있습니다 기초의 the Hash bang urls

0

이것은 내가 생각해 낸 해결책이다. 이것은 MooTools에 의존합니다.

function replaceUrlParameter (url, parameterName, newValue) { 
    var uri = new URI(url); 
    var uriBase = ri.get('directory') + uri.get('file'); 
    var query = uri.get('query').parseQueryString(false, true); 
    query[parameterName] = newValue; 

    uriBase += '?'; 
    for (var i in query) { 
     if (i === 'undefined') continue; 
     if (i === '') continue; 
     uriBase += i + '=' + escape(query[i]) + '&'; 
    } 
    return uriBase.substring(0, galleryLinkBase.length - 1); 
} 

이것은 내 용도에 따라 다르지만 나중에 다른 사람들을위한 출발점으로 사용할 수 있습니다.

3

당신이 무슨 짓을했는지에 또한,이 String을 확장하고는 URI 클래스에 의존성을 제거 이것은 이전 게시물을 해주 위해

(function() { 

// deps on Types/String.toQueryString() 
String.implement({ 

    fixQueryString: function(key, value) { 
     var query = this.parseQueryString() || {}; 
     query[key] = value; 
     return Object.toQueryString(query); 
    } 

}); 

// exports: 
this.replaceUrlParameter = function(url, key, value) { 
    var parts = url.split('?'), QS = parts[1] || null; 

    return QS ? [parts[0], QS.fixQueryString(key, value)].join("?") : url; 
}; 

})(); 

console.log(replaceUrlParameter('/foo/bar', 'frob', 'ownies')); 
/foo/bar/ 
console.log(replaceUrlParameter('/foo/bar?frob=123123123', 'frob', 'ownies')); 
/foo/bar?frob=ownies 

http://jsfiddle.net/dimitar/fjj6W/

+0

니스, 정말 고마워요! –

+0

좋은 답변, 간결하지만 또한 최소한의 정보 이상이 포함되어 있습니다! –

관련 문제