2011-12-03 2 views
1

브라우저의 쿼리 문자열을 가져오고 새 키/값을 함수에 전달할 수 있도록 Javascript 함수를 작성하려고합니다. 키가 있으면 값을 바꿔야합니다. 지난 3.5 시간을 보냈으므로 아직 교체 부품으로 돌아 가지 않았습니다.자바 스크립트 : 쿼리 문자열 작업

지금까지 답변을 사용하고 있습니다 : How to get the query string by javascript? 쿼리 문자열을 얻으려면. 그러나, ... 작동 표시되지 않습니다 내가 함께 테스트 된 URL했다 : http://www.site.com/poo?drwho=tombaker&companion=k9

var assoc = {}; 
    var decode = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); }; 
    var queryString = location.search.substring(1); 
    var keyValues = queryString.split('&'); 

    for(var i in keyValues) { 
    var key = keyValues[i].split('='); 
    assoc[decode(key[0])] = decode(key[1]); 
    } 

    if(assoc["dr"] === undefined) { 
    // not found. todo: replace 
    } 

난 정말 어떤 도움을 appricate 것! JQuery를 사용하여이 작업을 수행하는 간단한 방법이 있습니까?

+2

"작동하지 않는 것"은 무엇을 의미합니까? – gilly3

+0

아무 것도하지 않습니다. 그것은 assoc 배열이 비어 있다고 말합니다. –

+0

코드를 시도하고 끝에 경고 (assoc [ "drwho"]);를 추가하면 예상대로 "tombaker"가 출력됩니다 ... – codeling

답변

2

여기에 코드를 복사하여 붙여 넣기 : http://jsfiddle.net/6KcWh/5/JSON.stringify()에 전화를 걸어 assoc의 내용을 확인하십시오. assoc은 정의되지 않았습니다. 그러나 assoc.dr은 쿼리 문자열 인수가 dr이 아니기 때문에 물론 정의되지 않습니다. drwho의 쿼리 문자열 인수입니다. 잘못된 쿼리 문자열을 찾는 것처럼 보입니다.

1

for...in을 오용하는 것으로 보입니다.

for 루프를 표준 for (i = 0 ; i < keyValues.length; i++)으로 변환하고 other answers을 확인하십시오. for...in이 자바 스크립트에서 사용됩니다.

+0

고마워, 나는 그것을 시도하고 assoc는 정의되지 않는다고 말한다. –

+0

오용하지 마세요. "for ... in"구문은 각 "for each"루프에 적절합니다. javascript 구문 – codeling

+0

저의 작품 http://jsfiddle.net/3afJH/ –