"jrock"... I like it! I think Mr. Rochkind has a new nickname. And a new imperative: better get the band together for Seattle, Jonathan! Is it too late to dedicate a presentation slot to a performance? (Whoa, actually, seriously, a Code4Lib talent show would be AWESOME.) On Tue, Dec 6, 2011 at 8:38 AM, Erik Hatcher <[log in to unmask]> wrote: > I'm with jrock on this one. But maybe I'm a luddite that didn't get the > memo either (but I am credited for being one of the instrumental folks in > the Ajax world, heh - in one or more of the Ajax books out there, us old > timers called it "remote scripting"). > > What I hate hate hate about seeing JSON being returned from a server for > the browser to generate the view is stuff like: > > string = "<div>" + some_data_from_JSON + "</div>"; > > That embodies everything that is wrong about Ajax + JSON. > > As Jonathan said, the server is already generating dynamic HTML... why > have it return JSON and move processing/templating to the client for some > things but not other things? Rhetorical question... of course "it depends" > on the application. If everything is entirely client-side generated, then > sure. But for "traditional" webapps, JSON to the client to simply piece it > together as HTML is hideous. > > I spoke to this a bit at my recent ApacheCon talk, slides are here: < > http://www.slideshare.net/erikhatcher/solr-flair-10173707> slides 4 and 8 > particularly on this topic. > > So in short, opinions differ on the "right" way to do Ajax obviously. It > depends, no question, on the bigger picture and architectural pieces in > play, but there is absolutely nothing wrong with having HTML being returned > from the server for partial pieces of the page. An in many cases it's the > cleanest way to do it anyway. > > Erik > > > > On Dec 5, 2011, at 18:45 , Jonathan Rochkind wrote: > > > I still like sending HTML back from my server. I guess I never got the > message that that was out of style, heh. > > > > My server application already has logic for creating HTML from > templates, and quite possibly already creates this exact same piece of HTML > in some other place, possibly for use with non-AJAX fallbacks, or some > other context where that snippet of HTML needs to be rendered. I prefer to > re-use this logic that's already on the server, rather than have a > duplicate HTML generating/templating system in the javascript too. It's > working fine for me, in my use patterns. > > > > Now, certainly, if you could eliminate any PHP generation of HTML at > all, as I think Godmar is suggesting, and basically have a pure Javascript > app -- that would be another approach that avoids duplication of HTML > generating logic in both JS and PHP. That sounds fine too. But I'm still > writing apps that degrade if you have no JS (including for web spiders that > have no JS, for instance), and have nice REST-ish URLs, etc. If that's > not a requirement and you can go all JS, then sure. But I wouldn't say > that making apps that use progressive enhancement with regard to JS and > degrade fine if you don't have is "out of style", or if it is, it ought not > to be! > > > > Jonathan > > > > On 12/5/2011 6:31 PM, Godmar Back wrote: > >> FWIW, I would not send HTML back to the client in an AJAX request - that > >> style of AJAX fell out of favor years ago. > >> > >> Send back JSON instead and keep the view logic client-side. Consider > using > >> a library such as knockout.js. Instead of your current (difficult to > >> maintain) mix of PhP and client-side JavaScript, you'll end up with a > >> static HTML page, a couple of clean JSON services (for checked-out per > >> subject, and one for the syndetics ids of the first 4 covers), and clean > >> HTML templates. > >> > >> You had earlier asked the question whether to do things client or server > >> side - well in this example, the correct answer is to do it client-side. > >> (Yours is a read-only application, where none of the advantages of > >> server-side processing applies.) > >> > >> - Godmar > >> > >> On Mon, Dec 5, 2011 at 6:18 PM, Nate Hill<[log in to unmask]> > wrote: > >> > >>> Something quite like that, my friend! > >>> Cheers > >>> N > >>> > >>> On Mon, Dec 5, 2011 at 3:10 PM, Walker, David<[log in to unmask]> > >>> wrote: > >>> > >>>> I gotcha. More information is, indeed, better. ;-) > >>>> > >>>> So, on the PHP side, you just need to grab the term from the query > >>>> string, like this: > >>>> > >>>> $searchterm = $_GET['query']; > >>>> > >>>> And then in your JavaScript code, you'll send an AJAX request, like: > >>>> > >>>> http://www.natehill.net/vizstuff/catscrape.php?query=Cooking > >>>> > >>>> Is that what you're looking for? > >>>> > >>>> --Dave > >>>> > >>>> ----------------- > >>>> David Walker > >>>> Library Web Services Manager > >>>> California State University > >>>> > >>>> > >>>> -----Original Message----- > >>>> From: Code for Libraries [mailto:[log in to unmask]] On Behalf > Of > >>>> Nate Hill > >>>> Sent: Monday, December 05, 2011 3:00 PM > >>>> To: [log in to unmask] > >>>> Subject: Re: [CODE4LIB] jQuery Ajax request to update a PHP variable > >>>> > >>>> As always, I provided too little information. Dave, it's much more > >>>> involved than that.... > >>>> > >>>> I'm trying to make a kind of visual browser of popular materials from > one > >>>> of our branches from a .csv file. > >>>> > >>>> In order to display book covers for a series of searches by keyword, I > >>>> query the catalog, scrape out only the syndetics images, and then > >>> display 4 > >>>> of them. The problem is that I've hardcoded in a search for > 'Drawing', > >>>> rather than dynamically pulling the correct term and putting it into > the > >>>> catalog query. > >>>> > >>>> Here's the work in process, and I believe it will only work in Chrome > >>>> right now. > >>>> http://www.natehill.net/vizstuff/donerightclasses.php > >>>> > >>>> I may have a solution, Jason's idea got me part way there. I looked > all > >>>> over the place for that little snippet he sent over! > >>>> > >>>> Thanks! > >>>> > >>>> > >>>> > >>>> On Mon, Dec 5, 2011 at 2:44 PM, Walker, David<[log in to unmask]> > >>>> wrote: > >>>> > >>>>>> And I want to update 'Drawing' to be 'Cooking' w/ a jQuery hover > >>>>>> effect on the client side then I need to make an Ajax request, > >>> correct? > >>>>> What you probably want to do here, Nate, is simply output the PHP > >>>>> variable in your HTML response, like this: > >>>>> > >>>>> <h1 id="foo"><?php echo $searchterm ?></h1> > >>>>> > >>>>> And then in your JavaScript code, you can manipulate the text through > >>>>> the DOM like this: > >>>>> > >>>>> $('#foo').html('Cooking'); > >>>>> > >>>>> --Dave > >>>>> > >>>>> ----------------- > >>>>> David Walker > >>>>> Library Web Services Manager > >>>>> California State University > >>>>> > >>>>> > >>>>> -----Original Message----- > >>>>> From: Code for Libraries [mailto:[log in to unmask]] On Behalf > >>>>> Of Nate Hill > >>>>> Sent: Monday, December 05, 2011 2:09 PM > >>>>> To: [log in to unmask] > >>>>> Subject: [CODE4LIB] jQuery Ajax request to update a PHP variable > >>>>> > >>>>> If I have in my PHP script a variable... > >>>>> > >>>>> $searchterm = 'Drawing'; > >>>>> > >>>>> And I want to update 'Drawing' to be 'Cooking' w/ a jQuery hover > >>>>> effect on the client side then I need to make an Ajax request, > correct? > >>>>> What I can't figure out is what that is supposed to look like... > >>>>> something like... > >>>>> > >>>>> $.ajax({ > >>>>> type: "POST", > >>>>> url: "myfile.php", > >>>>> data: "...not sure how to write what goes here to make it > >>> 'Cooking'..." > >>>>> }); > >>>>> > >>>>> Any ideas? > >>>>> > >>>>> > >>>>> -- > >>>>> Nate Hill > >>>>> [log in to unmask] > >>>>> http://www.natehill.net > >>>>> > >>>> > >>>> > >>>> -- > >>>> Nate Hill > >>>> [log in to unmask] > >>>> http://www.natehill.net > >>>> > >>> > >>> > >>> -- > >>> Nate Hill > >>> [log in to unmask] > >>> http://www.natehill.net > >>> >