2011-01-11 17 views
8

c'è qualche funzione js per convertire un array in urlencoded? Sono totalmente newbie n JS ... grazie! ...Array JavaScript a URLencoded


mia matrice è una chiave dell'array & valore .... così,

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

è lo stesso di

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

c'è qualche soluzione?


oh Sory ... ho una serie come questa

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

poi ho bisogno la matrice convertito in essere:

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

Stai parlando URL codifica ogni stringa in un array o concatenare in una stringa di query URL o .. ? – jerluc

+0

La codifica URL viene applicata solo alle stringhe. Se desideri applicarlo a un array, devi prima spiegare cosa intendi con questo - vuoi concatenare l'array in una singola stringa? Desideri codificare i singoli elementi dell'array? Come trattate elementi di array non stringa (come oggetti, funzioni o altri array)? Sarebbe una buona idea modificare la tua domanda per includere almeno un esempio di ciò che desideri ottenere (array originale, stringa url risultante). –

risposta

9

Si può fare qualcosa di simile:

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

Vorrei andare con 'var url = '?' + myData.join ('&'); ' – earthmeLon

17

Prova questo:

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

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

out.join('&'); 
+2

È meglio fare: out.push (key +' = '+ encodeURIComponent (arr [key])); –

1

Tratto da jgrunds rispondere, se si vuole estendere la funzionalità di matrice

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

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

    return out.join('&'); 
} 

O se vuoi una funzione autonoma

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

Se si utilizza un oggetto invece di un array si può fare questo (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));