2011-01-11 6 views
8

배열을 urlencoded로 변환하는 js 함수가 있습니까? 제가 완전히 안돼서 N JS ... 감사합니다 ...URLencoded에 대한 JavaScript 배열


내 배열 키 값 & 어레이 .... 그래서 ,

myData=new Array('id'=>'354313','fname'=>'Henry','lname'=>'Ford'); 

와 동일하다
myData['id']='354313'; 
myData['fname']='Henry'; 
myData['lname']='Ford'; 
myData.join('&'); //returns error, it doesn't work on such array... 

어떤 해결책이 있습니까?


sory 오 ... 나는이

var myData=new Array('id'=>'354313','fname'=>'Henry','lname'=>'Ford'); 

같은 배열이 다음 내가 배열로 변환 할 필요가 있습니다 : 함수 탈출 및 unescape에서

id=354313&fname=Henry&lname=Ford 
+0

당신이 URL은 배열의 각 문자열을 인코딩 또는 URL 쿼리 문자열 또는 그들을을 연결에 대해 얘기하는 .. ? – jerluc

+0

URL 인코딩은 문자열에만 적용됩니다. 배열에 적용하려면 먼저 배열의 의미를 설명해야합니다. 배열을 단일 문자열로 연결 하시겠습니까? 개별 배열 요소를 인코딩 하시겠습니까? 문자열이 아닌 배열 요소 (객체, 함수 또는 다른 배열)를 어떻게 처리합니까? 질문을 편집하여 달성하고자하는 것 중 적어도 하나의 예 (원본 배열, 결과로 URL 인코딩 된 문자열)를 포함하는 것이 좋습니다. –

답변

9

이 같은 수행 할 수 있습니다

var myData = new Array('id=354313', 'fname=Henry', 'lname=Ford'); 
var url = myData.join('&'); 
+1

나는'var url = '?' + myData.join ('&');' – earthmeLon

17

이 시도 : 당신이 배열 기능

Array.prototype.toQueryString = function(){ 
    var out = new Array(); 

    for(key in this){ 
     out.push(key + '=' + encodeURIComponent(this[key])); 
    } 

    return out.join('&'); 
} 

또는 경우를 확장 할 경우 jgrunds에서 촬영

var myData = {'id': '354313', 'fname':'Henry', 'lname': 'Ford'}; 
var out = []; 

for (var key in myData) { 
    out.push(key + '=' + encodeURIComponent(myData[key])); 
} 

out.join('&'); 
+2

다음과 같이하면됩니다. out.push (key + '='+ encodeURIComponent (arr [key])); –

1

는 대답을 독립형 기능을 원한다면

당신이 배열 대신 객체를 사용하는 경우 0
function arrayToQueryString(array_in){ 
    var out = new Array(); 

    for(var key in array_in){ 
     out.push(key + '=' + encodeURIComponent(array_in[key])); 
    } 

    return out.join('&'); 
} 
1

이 (ES6)을 수행 할 수 있습니다

var myData = { 
    id: 354313, 
    fname: 'Henry', 
    lname: 'Ford', 
    url: 'https://es.wikipedia.org/wiki/Henry_Ford', 
}; 

encodeDataToURL = (data) => { 
    return Object 
     .keys(data) 
     .map(value => `${value}=${encodeURIComponent(data[value])}`) 
     .join('&'); 
} 

console.log(encodeDataToURL(myData)); 
관련 문제