Thanks, Joran. We have plans to start from scratch with Ajax in Prototype 2.0; I think our ideas are mostly along the same lines as yours.
I also want to fix some of the annoyances of the current API, hopefully for 1.7. Cheers, Andrew On Dec 11, 2009, at 7:07 AM, Joran Greef wrote: > From: > https://prototype.lighthouseapp.com/projects/8886/tickets/961-ajaxrequestsetrequestheaders-sets-content-type-header-as-content-type-and-sets-it-regardless-of-whether-its-provided-to-the-ajaxrequest-interface-and-other-issues > > The interface of the Ajax.Request object has a few problems: > > 1. Too many implicit defaults (Accept, Content-Type, charset etc). > 2. Does not model the interface of HTTP. > 3. 'requestHeaders' are provided as an option, 'encoding' as an > option, 'contentType' as an option, when 'encoding' should be > specified as 'charset' as part of the 'Content-Type' header which > should be a subset of 'requestHeaders'. > 4. If the request headers are provided as 'requestHeaders' then the > request body needs to be provided as 'requestBody' not as 'postBody'. > REST concepts such as method, uri, headers, parameters, representation > should not be fused (e.g. 'XMLHttpRequest' which fuses the content > type and the protocol, or 'postBody' which fuses the method and the > representation). > 5. 'requestHeaders' smells. > 6. For method overriding, the 'X-Http-Method-Override' header would be > better than the '_method' parameter. > 7. It's not memorable. One has to keep looking up the Ajax options in > the documentation (and where things get implicit, in the > implementation). > > Here's a better (and more memorable) interface: > > Http.get/set/unset(uri, options) where 'options' has the following > properties: 'headers', 'parameters', 'representation', onSuccess, > 'onTimeout', 'onFailure', and where the response object passed to the > callbacks has the following properties: 'status', 'headers', > 'representation'. > > Http.delete can't be used as 'delete' is a reserved word. Http.set > does a POST with the 'X-Http-Method-Override' header set to 'PUT' so > as to be idempotent where the server supports PUT. Http.unset does a > POST with the 'X-Http-Method-Override' header set to 'DELETE'. > > -- > You received this message because you are subscribed to the Google > Groups "Prototype: Core" group. > To post to this group, send email to prototype-core@googlegroups.com > To unsubscribe from this group, send email to > prototype-core-unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/prototype-core?hl=en -- You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to prototype-core-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en