xhr icon indicating copy to clipboard operation
xhr copied to clipboard

Allow FormData constructor to accept array or object too

Open jimmywarting opened this issue 7 years ago • 4 comments
trafficstars

Like the URLSearchParams allow the FormData constructor able to accept a iterable array or object instead of having to manually append everything

Current way of solving things:

var data = [ ['foo', 'bar'] ]
var data = { foo: 'bar' }

var fd = new FormData()

for (let [key, val] of new URLSearchParams(data)) {
  fd.append(key, val)
}

// or one-liner 
new URLSearchParams(data).forEach(args => fd.append(...args))

(this don't work for files/blobs)

Suggested way

var data = [ ['foo', 'bar'] ]
var data = { foo: 'bar' }

var fd = new FormData(data)

jimmywarting avatar Apr 18 '18 10:04 jimmywarting

note var data = [ 'foo', 'bar' ]; might not work, it'd need to be var data = [ [ 'foo', 'bar'] ]; Otherwise this looks like a good idea.

travisleithead avatar Sep 24 '18 17:09 travisleithead

That is probably what i meant. updated my examples

jimmywarting avatar Sep 25 '18 11:09 jimmywarting

@travisleithead Almost makes more sense to me to use Map() or Set() instead of plan Array or Object literals.

Another facet to consider.

TheLarkInn avatar Jun 12 '19 21:06 TheLarkInn

+1, this would be very nice to have. I'd definitely use the object form.

silverwind avatar Mar 01 '24 17:03 silverwind