On Thu, Jul 23, 2009 at 3:57 PM, Julian Aubourg<aubourg.jul...@gmail.com> wrote:
> I really, really like what you did here, Nathan.

thanks.

> Behavior of $.ajax could
> be: option[response.code] ? option[response.code](infos) : error(infos)
> So basically, any response code that is not 200 is considered an error BUT
> you can specify a specific error callback per type of response. Would that
> be really difficult to implement?

actually, i think any status (>=200 && < 300) || 304 is considered
successful.  204 is really only an error for dataType:json for now.
this is one of the reasons why i handle json processing myself in my
Rest plugin.  when calling the plugin's functions, 204 is successful
and null is passed for the data.

as for supporting the status code specific handlers, i imagine both
the internal success and handleError functions would have to check for
a status code specific handler before calling the provided 'success'
or 'error' ones.  i can't imagine why that would be difficult from my
cursory glance over the jQuery code.  both have access to the options
and the xhr, so it should be a very simple change.  though, i'm not
set up to hack on jQuery itself yet, so i can't make a proper patch at
the moment.

> 2009/7/23 Nathan Bubna <nbu...@gmail.com>
>>
>> On Wed, Jul 22, 2009 at 4:42 PM, Justinvh<justi...@gmail.com> wrote:
>> >
>> > Heh, well...
>> >
>> > If we define a successful response as one defined by HTTP/1.1
>> > standards, then any 2xx/3xx based response should be considered
>> > successful. However, I can see that if you are interacting with a
>> > layer such as $.ajax() that specified an expected dataType as a return
>> > that it should reasonably error to some degree.
>> >
>> > It is definitely a tangential issue - And is most likely apparent to
>> > any RESTful applications that would rely on status codes to manipulate
>> > client-side interaction.
>>
>> agreed.
>>
>> > Perhaps, a solution would be to have the option of defining callbacks
>> > per status code.
>> >
>> > E.g. $.ajax(..., {
>> >     'onStatusCode':
>> >       { '200': {
>> >            'dataType': 'json',
>> >            'success': function(data) { },
>> >            'error': function(data) { }
>> >          }
>> >          '204': {
>> >             'success': function () {
>> >              }
>> >          }
>> >        }
>> >    }
>>
>> i've got something like this in my rest plugin
>> (http://plugins.jquery.com/project/rest).   it's still a young plugin,
>> but it's already made using jQuery ajax with REST services much, much
>> easier.  it would look something like this for a delete call:
>>
>> $.Delete('/groups/@me/foo', {
>>  success: function(data) { //do stuff },
>>  204: 'success' // or a function of its own
>> });
>>
>> since you seem to be working in the same space, i'd love your feedback
>> on the plugin, if you've got the time.
>>
>> > - Or something that degree that would allow a 'lower-level' of
>> > interaction with how $.ajax() would handle responses.
>> >
>> > On Jul 22, 4:26 pm, John Resig <jere...@gmail.com> wrote:
>> >> I guess that's a tangential issue, not really related to JSON - if a
>> >> server
>> >> returns a 204 (with no content) should we call success with a null or
>> >> undefined data argument?
>> >>
>> >> At the moment I think that's far more likely that when you do a
>> >> request, and
>> >> you're expecting something (JSON, XML, etc.) and you don't get it (204
>> >> or
>> >> not), that it should not count as a success. I'd be willing to tweak
>> >> the
>> >> docs to represent that. Of course, I'm willing to be convinced
>> >> otherwise.
>> >>
>> >> --John
>> >>
>> >> On Wed, Jul 22, 2009 at 7:10 PM, Justinvh <justi...@gmail.com> wrote:
>> >>
>> >> > There is a parsererror, but the way the error callback is described
>> >> > seems misleading. What if on a 200 response you returned JSON - But a
>> >> > 204, being that the response code is 'NO CONTENT', would not have
>> >> > JSON
>> >> > in it. Should it still error?
>> >>
>> >> > Shouldn't the desired effect be to ignore the data inside, or is this
>> >> > logic that should be handled as a case in dataFilter?
>> >>
>> >> > On Jul 22, 3:17 pm, John Resig <jere...@gmail.com> wrote:
>> >> > > What's the error message that you are receiving? Reading through
>> >> > > the code
>> >> > > I'd imagine that you would receive a 'parsererror', which seems
>> >> > appropriate.
>> >>
>> >> > > --John
>> >>
>> >> > > On Wed, Jul 22, 2009 at 3:30 PM, Justinvh <justi...@gmail.com>
>> >> > > wrote:
>> >>
>> >> > > > Can someone explain me the reasoning that if a dataType is
>> >> > > > specified
>> >> > > > as JSON and the response code is say a 204 (NO CONTENT), that it
>> >> > > > would
>> >> > > > error. The way it looks, the code is expecting JSON back, but
>> >> > > > since
>> >> > > > there is no JSON, it fails.
>> >>
>> >> > > > The documentation however says that error is "A function to be
>> >> > > > called
>> >> > > > if the request fails." - Which makes me think that the actual
>> >> > > > request
>> >> > > > fails, not that the data parsed failed.
>> >>
>> >> > > > Maybe it's me, but it seems a bit confusing.
>> >>
>> >>
>> > >
>> >
>>
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to