Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript Array to URLencoded

is there any js function to convert an array to urlencoded? i'm totally newbie n JS... thanks!...


my array is a key & value array.... so,

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

is the same as

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

is there any solution?


oh sory... i have an array like this

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

then i need the array converted to be:

id=354313&fname=Henry&lname=Ford
like image 538
theHack Avatar asked Jan 11 '11 09:01

theHack


3 Answers

Try this:

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

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

out.join('&');

For an explanation about why use hasOwnProperty, take a look at this answer to "How do I loop through or enumerate a JavaScript object?".

like image 63
jgrund Avatar answered Oct 14 '22 23:10

jgrund


If you use jQuery, can use $.param(). Check here . Example of using

var myData = {'id' : '354313', 'fname' : 'Henry', 'lname' : 'Ford'};
var url = "https://stackoverflow.com?" + $.param(myData);

Output is

https://stackoverflow.com?id=354313&fname=Henry&lname=Ford

Also works with an array of objects (like from jQuery(form).serializeArray()) :

var myData = [{'id' : '354313'}, {'fname' : 'Henry'},{'lname' : 'Ford'}];
like image 18
Eduard Brokan Avatar answered Oct 14 '22 22:10

Eduard Brokan


You can do something like this:

var myData = new Array('id=354313', 'fname=Henry', 'lname=Ford');
var url = myData.join('&');
like image 15
はると Avatar answered Oct 14 '22 23:10

はると