Since when did PHP and CGI use this? page.html?actor={first: Clint, last: Eastwood}
I do agree with being able to get query data. Though, I believe the reason most JS libraries and JS itself completely exclude url query parsing is because there is no true standard on how to handle query keys. The actual specification does not say how multiple of the same key should be handled. PHP will make anything using a [] into an array, it'll parse arrayname[keyname]=value into an actual array key/value pair, and discard any additional keys for anything not in an array. While some CGI systems will take &author=Foo&author=Baz¬me=Rambo and make it { author: [Foo, Baz], notme: Rambo }. So it's all quite inconsistent across different server backends, and following one scheme is much like locking down to a specific server backend. Perhaps configurable profiles for different backends? ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://nadir-seen-fire.com] -Nadir-Point & Wiki-Tools (http://nadir-point.com) (http://wiki-tools.com) -MonkeyScript (http://monkeyscript.org) -Animepedia (http://anime.wikia.com) -Narutopedia (http://naruto.wikia.com) -Soul Eater Wiki (http://souleater.wikia.com) weepy wrote: > I do something very similar in my JS. > > >> Why not incorporate json stringifying instead? >> > > It's very useful to mirror CGI format - e.g. how PHP and Rails use it. > > E.g. > > ?x=hello > > rather than JSON : > > x='hello' > > > > > > On 2 Mar, 17:40, Daniel Friesen <nadir.seen.f...@gmail.com> wrote: > >> Why use a custom object notation incompatible with anything else when >> JSON exists? >> Why not incorporate json stringifying instead? >> >> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://nadir-seen-fire.com] >> -Nadir-Point & Wiki-Tools (http://nadir-point.com) (http://wiki-tools.com) >> -MonkeyScript (http://monkeyscript.org) >> -Animepedia (http://anime.wikia.com) >> -Narutopedia (http://naruto.wikia.com) >> -Soul Eater Wiki (http://souleater.wikia.com) >> >> John Resig wrote: >> >>> Kevin - >>> >>> Something like this we'd like to test out in the realm of plugins >>> first - just release your work as a plugin (be sure to toss it up on >>> plugins.jquery.com and link to some demos) and if people really start >>> to use it we'll definitely consider it for core. That's generally how >>> we evaluate most code that goes in to core (look at how plugins >>> handled the problems first, then refine them). >>> >>> --John >>> >>> On Sun, Mar 1, 2009 at 5:19 PM, Kevin Dalman <kevin.dal...@gmail.com> wrote: >>> >>>> I am working on a project and need URL param-parsing, as I usually do. >>>> But this time I decided to try something new - based on ColdFusion >>>> syntax that I have used for ages. >>>> >>>> ColdFusion creates a system-level hash structure named "URL" that >>>> contains all the URL params. This is very convenient, so I created a >>>> jQuery extension to do the same thing. It creates and populates a >>>> "$.url" hash on-load. This is a static var similar to $.browser. >>>> >>>> The $.url object does the *opposite* of the $.serialize method: >>>> $.serialize converts complex data TO an URL format, while $.url >>>> creates a data object FROM the URL params. >>>> >>>> My initial version was very small - only a few bytes of code is needed >>>> to parse simple parameters. This would address the basic needs of most >>>> users. So I think this *at a minimum* would be a valuable addition to >>>> the jQuery core. The code is very small, creates no conflicts, and >>>> takes barely 1ms. >>>> >>>> After I created the basic method, I added more elaborate parsing to >>>> store numbers and booleans in their proper format, and to allow >>>> 'complex data' to be passed - ie, arrays and hashes: >>>> >>>> page.html?actors=[Eastwood,Bronson,Heston] >>>> page.html?actor={first: Clint, last: Eastwood} >>>> >>>> This includes automatic array creation when a param key is repeated: >>>> >>>> page.html?actor=Eastwood&actor=Bronson&actor=Heston >>>> >>>> ...becomes: actor=[ Eastwood, Bronson, Heston ] >>>> >>>> This also allows arrays-of-arrays and arrays-of-hashes: >>>> >>>> page.html?actor={first: Clint, last: Eastwood}&actor={first: Charles, >>>> last: Bronson} >>>> >>>> ...becomes: >>>> >>>> actor = [ >>>> 0: { >>>> first: 'Clint' >>>> , last: 'Eastwood' >>>> } >>>> 1: { >>>> first: 'Charles' >>>> , last: 'Bronson' >>>> } >>>> ] >>>> >>>> You can see and test a demo page here... >>>> >>>> http://layout.jquery-dev.net/url_parsing.html >>>> >>>> There are a number of test URLs (hyperlinks) provided to demonstrate >>>> the different types of parsing, but you can append any params you want >>>> to the URL to see how they are parsed. >>>> >>>> To illustrate the size of the 'long version', here is the partially >>>> minified code: >>>> >>>> // MINIFIED CODE (860 bytes) >>>> function setURL(){ >>>> $.url={};$.urlParams=[]; >>>> var s=self.location.search.substr(1),p,d,k,v,i; >>>> if(!s)return; >>>> p=s.split("&"); >>>> for(i=0;i<p.length;i++){ >>>> d=p[i].split("=");k=$.trim(d[0]); >>>> if(k){ >>>> v=d[1]==undefined?true:parse(d[1]); >>>> if(!$.url[k]){$.url[k]=v;$.urlParams.push(k);} >>>> else{if(!$.isArray($.url[k])||($.isArray(v)&&typeof $.url[k][0]! >>>> ='object'))$.url[k]=[$.url[k]];$.url[k].push(v);} >>>> } >>>> } >>>> function parse(x){ >>>> x=$.trim(x); >>>> if(!x)return ""; >>>> var c=x.length-1,f=x.charAt(0),l=x.charAt >>>> (c),A=f=="["&&l=="]",H=f=="{"&&l=="}",d,h,k,o,i; >>>> if(A||H){ >>>> o=A?[]:{};d=x.substr(1,c-1).split(",") >>>> for(i=0;i<d.length;i++){ >>>> if(A)o[i]=parse(d[i]); >>>> else if(d[i]){h=d[i].split(":");k=$.trim(h[0]);if(k)o[k]=parse(h[1]);} >>>> } >>>> return o; >>>> } >>>> else if(!isNaN(x))return Number(x); >>>> else if(x==="true")return true; >>>> else if(x==="false")return false; >>>> else return x; >>>> } >>>> } >>>> >>>> The demo page contains a more readable, commented version of the code >>>> above. If there is any interst in this code, feel free to help >>>> yourself. I did not keep a copy of the short-version, but it would not >>>> take long to recreate - this is not complex code. >>>> >>>> SO, do John and the gang feel this addition would be worthwhile for >>>> jQuery? I'm suggesting this partly out of self-interest - I copy the >>>> same URL-parsing functions to every project I work on. I'd prefer that >>>> this basic functionality was part of jQuery, and I feel a $.url object >>>> is the most intuitive and flexible way to do it. >>>> >>>> At a minimum, this will become part of my standard jQuery extensions >>>> library. I prefer working with an 'URL object' rather than using a >>>> 'parsing method': >>>> >>>> // using an URL Object >>>> if ($.url.section) doSomething( $.url.section ); >>>> >>>> // using a Parsing Method >>>> var section = parseURL('section'); >>>> if (section) doSomething( section ); >>>> >>>> The ability to use complex objects offers more options for passing JS >>>> data between pages: >>>> >>>> $.each($.url.actor, function (idx, Actor) { >>>> $('#List').append('<li>'+ Actor.first +' '+ Actor.last +'</li>'); >>>> }); >>>> >>>> The example above is a little silly, but you see how it could be >>>> useful for passing 'state' or other data. >>>> >>>> Feedback? >>>> >>>> /Kevin >>>> > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---