Actually, I think you are right in line with the rest of us. Rick
On Mon, Dec 28, 2009 at 4:11 PM, Erik Beeson <erik.bee...@gmail.com> wrote: > Again, why not do this with an Accept header? > > Client sends acceptable content types, server responds with a content type, > if the server's response is one of the accepted types, jQuery processes > accordingly, if not, jQuery returns data unprocessed. > > The dataType option should be for things that aren't necessarily well > communicated via content-type alone, like JSONP, or anything else that > modifies the nature of the request, not just the content type. > > If you're worried about your server sending malicious javascript, then only > accept text/plain or text/xml (even dataType: 'html' isn't safe since it > executes script blocks). If you don't care, then accept "*/*". > > Or am I missing something? > > --Erik > > > On Mon, Dec 28, 2009 at 12:51 PM, Rick Waldron <waldron.r...@gmail.com>wrote: > >> I can compromise with your #2, and give them both my vote. >> >> Passing it on... >> >> >> *1. Allow $.ajax() to accept multiple expected dataTypes. >> >> 2. Setting to have $.ajax() auto-detect/translate via response >> content-type >> header.* >> >> >> >> Julian - your thoughts? >> >> >> >> On Mon, Dec 28, 2009 at 3:39 PM, webbiedave >> <webbied...@websiteguard.com>wrote: >> >>> Rick, your 1 (which I too have suggested in the past) might bring about >>> unease as folks would prefer any eval-ing to come through explicit >>> request. >>> I also think it's imperative that the behavior of any dataType setting >>> (including null) shouldn't change (especially to one that suddenly >>> evals!). >>> But that's just my opinion. My 1, 2 would be: >>> >>> 1. Allow $.ajax() to accept multiple expected dataTypes. >>> >>> 2. Setting to have $.ajax() auto-detect/translate via response >>> content-type >>> header. >>> >>> >>> >>> On Mon, 28 Dec 2009 15:03:22 -0500, Rick Waldron <waldron.r...@gmail.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). >>> >> >>> > >>> > 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> >>> > >>> >> >>> <jquery-dev%252bunsubscr...@googlegroups.com<jquery-dev%25252bunsubscr...@googlegroups.com> >>> <jquery-dev%25252bunsubscr...@googlegroups.com<jquery-dev%2525252bunsubscr...@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> >>> > >>> >> >>> <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> >>> <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> >>> <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<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.