2011-01-11 21 views
8

Dizilimi kodlanmış bir dizine dönüştürmek için herhangi bir js işlevi var mı? i tamamen acemi olduğum n JS ... teşekkürler! ...JavaScript URLencode'a kodlanmış


benim dizi kilit & değer dizisi .... çok ,

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

aynıdır olduğunu
myData['id']='354313'; 
myData['fname']='Henry'; 
myData['lname']='Ford'; 
myData.join('&'); //returns error, it doesn't work on such array... 

Herhangi bir çözüm var mı?


Özür ... oh ben bu

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

gibi bir dizi sonra ben dizi olması dönüştürülür ihtiyaç vardır: işlev kaçış ve unescape de

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

URL dizideki her dize kodlayan veya bir URL sorgu dizesi veya bunları birleştirerek bahsediyoruz .. ? – jerluc

+0

Url kodlaması sadece dizelere uygulanır. Bir diziye uygulamak isterseniz, önce bunun ne demek istediğini açıklamanız gerekir - diziyi tek bir dizeyle birleştirmek ister misiniz? Bağımsız dizi elemanlarını kodlamak ister misiniz? Dize olmayan dizi öğelerini (nesneler, işlevler veya diğer diziler gibi) nasıl kullanırsınız? Sorunuzu, başarmak istediğiniz şeyin en az bir örneğini içerecek şekilde düzenlemek iyi bir fikir olacaktır (orijinal dizi, sonuçta url kodlanmış dizgi). –

cevap

9

Böyle bir şey yapabilirsiniz:

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

"var url = '?" Ile giderdim + myData.join ('&'); ' – earthmeLon

17

bu deneyin: Eğer dizi işlevleri

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

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

    return out.join('&'); 
} 

Veya eğer uzatmak istiyorsanız jgrunds Alındığı

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

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

out.join('&'); 
+2

Yapılması daha iyi: out.push (key +' = '+ encodeURIComponent (arr [key])); –

1

cevap Bağımsız bir işlev istiyorsanız,

Eğer bir dizinin yerine bir nesne kullanırsanız 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

bu (ES6) yapabilirsiniz:

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)); 
İlgili konular