Re: FormData questions

On Sat, Feb 13, 2010 at 6:44 PM, Jonas Sicking <jonas@sicking.cc> wrote:

> On Sat, Feb 13, 2010 at 6:02 PM, Dmitry Titov <dimich@chromium.org> wrote:
> > On Fri, Feb 12, 2010 at 5:32 PM, Jonas Sicking <jonas@sicking.cc> wrote:
> >>
> >> Hi WebApps fans!
> >>
> >> Working on implementing FormData and ran into a couple of questions.
> >>
> >> First of all, I assume that it is intended that a FromData object can
> >> be submitted several times. I.e. that the following code is ok:
> >>
> >> fd = new FormData;
> >> fd.append("name1", "foo");
> >> xhr1 = new XMLHttpRequest;
> >> xhr1.open(...);
> >> xhr1.send(fd);
> >> fd.append("name2", "bar");
> >> xhr2 = new XMLHttpRequest;
> >> xhr2.open(...);
> >> xhr2.send(fd);
> >>
> >> where the first XHR will send 1 name/value pair, and the second XHR
> >> will send 2. I do think this should be allowed, but I wanted to make
> >> sure others agreed.
> >
> > What can be a reason to disallow this? FormData is just a collection of
> data
> > objects. So assuming those XHR objects are sync, the code should work as
> you
> > described.
>
> It complicates implementation a tiny amount, but IMHO not enough to
> disallow it.
>
> > Interesting question though - what happens if XHR is async and the
> content
> > of FormData changes while async operation is in progress. By analogy with
> > scenario when underlying file of Blob object changes while async reading
> > operation is in progress, would it be reasonable to fail the send and
> return
> > 'error' ProgressEvent?
>
> I don't think raising an 'error' event should be correct, no. In my
> example above I think the two requests should succeed successfully,
> and the first one should submit one name/value pairs, and the second
> should submit two.


Does it mean that implementation should basically produce actual form data
synchronously (do a deep copy) at the moment of xhr.send() even if the xhr
is asynchronous? In case FormData includes Blobs backed by files on the disk
it may be prohibitive.


> >> Second, what encoding should be used when submitting a FromData
> >> object? A few options are:
> >> * Always use UTF-8
> >> * Allow a mimetype to be set on the FormData object, using a property
> >> or constructor argument
> >> * Use the charset mime parameter specified on the content-type header
> >> set using xhr.setRequestHeader
> >>
> >
> > Having a way to specify encoding could be only useful for writing client
> > code against legacy site that takes charset-encoded form data and ignores
> > the charset parameter of content-type header of the request. That seems
> rare
> > these days. It would be way simpler to only deal with UTF-8, imo.
>
> Does any browser include a charset parameter for multipart/form-data
> submissions? Firefox does not and last we added it it broke a bunch of
> sites IIRC. That was a while ago though.
>
> / Jonas
>

Received on Monday, 15 February 2010 02:05:18 UTC