Print

Print


"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
> >>>
>