>
> We're struggling with the best way to inform .ajax() that we expect
> multiple data types. Either, with a setting like "auto" or by passing an
> array of data types (or maybe allowing both).
>

Perhaps it would help if we defined a list of goals. I'll start.

1. $.ajax() - if dataType has not been defined in the argument list,
$.ajax() should respect the returned Content-type header and translate
accordingly.

2. ....


Fill it in!




Rick





On Sun, Dec 27, 2009 at 7:41 PM, <webbied...@websiteguard.com> wrote:

> We're struggling with the best way to inform .ajax() that we expect
> multiple data types. Either, with a setting like "auto" or by passing an
> array of data types (or maybe allowing both).
>
>
> On Sun, 27 Dec 2009 12:02:54 -0800, Erik Beeson <erik.bee...@gmail.com>
> wrote:
> > Seems like a lot of awkward wheel reinventing going on here. Content
> > type negotiation is a feature of HTTP; is there a reason we aren't
> > using it?
> >
> > --Erik
> >
> >
> > On Saturday, December 26, 2009, webbiedave <webbied...@websiteguard.com>
> > wrote:
> >> "Following your idea that a library has to keep exactly the same
> >> behavior from versions to versions [...] then what happens if & when
> >> jQuery introduces a new auto-detectable dataType in 1.4.1"
> >>
> >> Things could break *without* the introduction of new auto-detectable
> >> types. If you use "auto" and are only handling json and html and
> >> suddenly javascript is returned, that javascript will be eval'd and
> >> things will will not turn out well. That's why you can't use "auto" on
> >> untrusted/incompetent servers. That's the whole point of "auto". You
> >> are trusting the server to return the correct data. Use at your own
> >> risk. But it's there if you need it.
> >>
> >> Having said that, #1 in my suggestions is passing an array (dataType:
> >> ["json", html"]).
> >>
> >>
> >>
> >> On Dec 26, 6:41 pm, Julian Aubourg <aubourg.jul...@gmail.com> wrote:
> >>> > As I mentioned in my previous
> >>> > post, one of this approach's downside is "null vs auto" confusion as
> >>> > auto is like null plus more (json, script, future accepted
> dataTypes).
> >>> > The whole point is that "auto" means auto-detect type via
> content-type
> >>> > headers and null does not mean that (it means guess between html or
> >>> > xml)
> >>>
> >>> This is exactly where the solution is inconsistent.
> >>>
> >>> "auto", in your implementation, does not mean "null plus more (json,
> >>> script,
> >>> *future accepted dataTypes*)" but it just means "null plus json &
> >>> script"
> >>> and only that. Following your idea that a library has to keep exactly
> >>> the
> >>> same behavior from versions to versions (which jQuery broke btw when
> >>> ditching the @ syntax for attributes in selectors) then what happens if
> >>> &
> >>> when jQuery introduces a new auto-detectable dataType in 1.4.1? You
> >>> create
> >>> an "auto2" dataType so that existing code running in 1.4 is unaffected
> >>> (ie:
> >>> the new dataType is not auto-detected)? How would you document such a
> >>> behaviour? What happens when there's another auto-detectable dataType
> >>> introduced in 1.4.2?
> >>>
> >>> Giving programmers a way to specify exactly the dataTypes they expect
> to
> >>> be
> >>> auto-detected is the way to go (would it be with an array or an
> >>> expression).
> >>> Just add a s.dataType = s.dataType || [text,xml] in the ajax code and
> >>> you're
> >>> done: no backward compatibility issue... plus you're safe for future
> >>> developments in the dataType auto-detection area.
> >>>
> >>> 2009/12/27 webbiedave <webbied...@websiteguard.com>
> >>>
> >>> > "Second, auto seems like the weirdest thing ever to me used like it
> is
> >>> > here. So dataType==null and dataType=="auto" act the same for xml but
> >>> > not for script & json? Seems completely inconsistant to me."
> >>>
> >>> > It's not that weird. I don't think that different settings yielding
> >>> > different results is necessarily inconsistent. There are two ways to
> >>> > get xml and now there'll be a third. As I mentioned in my previous
> >>> > post, one of this approach's downside is "null vs auto" confusion as
> >>> > auto is like null plus more (json, script, future accepted
> dataTypes).
> >>> > The whole point is that "auto" means auto-detect type via
> content-type
> >>> > headers and null does not mean that (it means guess between html or
> >>> > xml). It is imperative that the behavior of dataType: null remains
> the
> >>> > same so this is a way to do that while affording multiple expected
> >>> > dataTypes in a way that's secure, doesn't bloat and doesn't break
> >>> > existing apps. Quite frankly, it usage makes simple sense to me and
> >>> > those who need it will know exactly what it means and how to use it
> >>> > (and will be relieved they can ditch their hacked libraries).
> >>>
> >>> > "If a coder does not want auto conversion, then he simply specifies a
> >>> > dataType (namely "text")."
> >>>
> >>> > But null does not mean auto convert. It means guess between html or
> >>> > xml and that cannot change.
> >>>
> >>> > "But, please, do not introduce a behavior that will act differently
> >>> > for xml than it does for any other dataType deduced from content type
> >>> > headers."
> >>>
> >>> > I admit I don't share your fear of such behavior and, in fact,
> greatly
> >>> > desire such a new setting. I'll know that my live apps that are using
> >>> > dataType: null will be unaffected and in the future I'd be able to
> >>> > write ajax calls that can respond to various data types. Also, I've
> >>> > suggested several approaches and look forward to reading what others
> >>> > think of them.
> >>>
> >>> > On Dec 26, 3:47 pm, Julian Aubourg <aubourg.jul...@gmail.com> wrote:
> >>> > > Regardless, I'm leaning towards the dataType: "auto" approach as
> >>> > > it's easy to use/implement and affords enough control.
> >>>
> >>> > > Well, so, first, I translated the dataType to "auto" when it was
> >>> > > null/undefined in my rewriting (because I hate messy/undefined
> >>> > > values).
> >>> > But
> >>> > > that's no biggy.
> >>>
> >>> > > Second, auto seems like the weirdest thing ever to me used like it
> >>> > > is
> >>> > here.
> >>> > > So dataType==null and dataType=="auto" act the same for xml but not
> >>> > > for
> >>> > > script & json? Seems completely inconsistant to me.
> >>>
> >>> > > If a coder does not want auto conversion, then he simply specifies
> a
> >>> > > dataType (namely "text"). You just have to document it. But,
> please,
> >>> > > do
> >>> > not
> >>> > > introduce a behavior that will act differentely for xml than it
> does
> >>> > > for
> >>> > any
> >>> > > other dataType deduced from content type headers.
> >>>
> >>> > > 2009/12/26 webbiedave <webbied...@websiteguard.com>
> >>>
> >>> > > > I was referring solely to the "bitwise or" style. Regardless, I'm
> >>> > > > leaning towards the dataType: "auto" approach as it's easy to
> use/
> >>> > > > implement and affords enough control.
> >>>
> >>> > > > Julian Aubourg wrote:
> >>>
> >>> > > > > As for string expressions not being in the calling style of
> >>> > > > > jQuery...
> >>> > > > > well... I really disagree here, since jQuery has expression
> >>> > > > > parsed
> >>> > parsed
> >>> > > > > pretty much everywhere ;)
> >>>
> >>> > > > --
> >>>
> >>> > > > 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%2bunsubscr...@googlegroups.com<jquery-dev%252bunsubscr...@googlegroups.com>
> <jquery-dev%252bunsubscr...@googlegroups.com<jquery-dev%25252bunsubscr...@googlegroups.com>
> >
> >>>
> >>> > > > .
> >>> > > > For more options, visit this group at
> >>> > > >http://groups.google.com/group/jquery-dev?hl=en.
> >>>
> >>> > --
> >>>
> >>> > You received this message because you are subscribed to the Google
> >>> > Groups
> >>> > "jQuery Development" group.
> >>> > To post to this group, send email to jquery-...@googlegroups.com.
> >>> > To unsubscribe from this group, send email to
> >>> >
> jquery-dev+unsubscr...@googlegroups.com<jquery-dev%2bunsubscr...@googlegroups.com>
> <jquery-dev%2bunsubscr...@googlegroups.com<jquery-dev%252bunsubscr...@googlegroups.com>
> >
> >>> > .
> >>> > For more options, visit this group at
> >>> >http://groups.google.com/group/jquery-dev?hl=en.
> >>
> >> --
> >>
> >> You received this message because you are subscribed to the Google
> Groups
> >> "jQuery Development" group.
> >> To post to this group, send email to jquery-...@googlegroups.com.
> >> To unsubscribe from this group, send email to
> >> jquery-dev+unsubscr...@googlegroups.com<jquery-dev%2bunsubscr...@googlegroups.com>
> .
> >> For more options, visit this group at
> >> http://groups.google.com/group/jquery-dev?hl=en.
> >>
> >>
> >>
> >
> > --
> >
> > You received this message because you are subscribed to the Google Groups
> > "jQuery Development" group.
> > To post to this group, send email to jquery-...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > jquery-dev+unsubscr...@googlegroups.com<jquery-dev%2bunsubscr...@googlegroups.com>
> .
> > For more options, visit this group at
> > http://groups.google.com/group/jquery-dev?hl=en.
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "jQuery Development" group.
> To post to this group, send email to jquery-...@googlegroups.com.
> To unsubscribe from this group, send email to
> jquery-dev+unsubscr...@googlegroups.com<jquery-dev%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/jquery-dev?hl=en.
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-...@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