On Tue, Apr 10, 2012 at 9:00 PM, Jonas Sicking <jo...@sicking.cc> wrote:
> On Tue, Apr 10, 2012 at 4:15 PM, Jonas Sicking <jo...@sicking.cc> wrote: > > On Tue, Apr 10, 2012 at 4:11 PM, Tab Atkins Jr. <jackalm...@gmail.com> > wrote: > >> On Tue, Apr 10, 2012 at 3:58 PM, Glenn Maynard <gl...@zewt.org> wrote: > >>> On Tue, Apr 10, 2012 at 5:50 PM, Jonas Sicking <jo...@sicking.cc> > wrote: > >>>> Is it more surprising than that > >>>> > >>>> xhr.send(hasSomethingToSend() ? getTheThingToSend() : ""); > >>>> > >>>> sets the Content-Type header even when no body is submitted? > >>> > >>> That's exactly what I would expect. A body that happens to have a zero > >>> length is still valid text/plain data. > > > > I'm not sure everyone is sharing that expectation. > > > >>> If you want to omit Content-Type in the above case, then you should > write: > >>> > >>> xhr.send(hasSomethingToSend() ? getTheThingToSend() : null); > >> > >> Or, of course: > >> > >> if(hasSomethingToSend()) > >> xhr.send(getTheThingToSend()); > > > > That isn't terribly useful if you're trying to get a response... > > > > If I'm the only one who prefer the other behavior then we should stick > > to what the spec already says. I'll make sure Gecko maintains that > > behavior as we implement our new WebIDL bindings. > > I got the following feedback from the WebIDL implementers: > > One note, though. If we do want the current behavior, then I think > that it would make sense to change the IDL for send() to: > > void send(ArrayBuffer data); > void send(Blob data); > void send(Document data); > void send(optional DOMString? data = null); > void send(FormData data); > > and change the text that currently says "If the data argument has been > omitted or is null" to "If the data argument is null". That will make > it much clearer to someone reading the IDL that passing nothing has > the same behavior as passing null. > > / Jonas > > This makes sense. I too am of the opinion that "" is text/plain even if empty and ought to be distinguishable. However I can see your point Jonas since "" is falsy.