bcochofel has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I'm using Perl CGI and HTML::Template to generate the following XML:
<?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xml" href="RR.xsl"?> <!-- $Id: template.xml,v 1.5 2006/12/11 11:13:30 bcochofel Exp $ --> <RR xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://cochofel.sytes.net ~bcochofel/iweb/files/RR.xsd"> <Request> <url>/~bcochofel/iweb/cgi-bin/getmysites.cgi</url> <session> <user>g...@cochofel.net</user> </session> <query> <!-- o campo parametro pode ter varias ocurrencias --> <param name="sort" value="asc" /> <param name="field" value="" /> </query> </Request> <Response> <sites> <site url="http://www.google.com"> <tag name="pesquisa" weight="30" /> <tag name="procura" weight="30" /> </site> <site url="http://www.google.com/webhp?complete=1"> <tag name="ajax" weight="25" /> <tag name="pesquisa" weight="30" /> <tag name="procura" weight="30" /> </site> <site url="https://webmail.fe.up.pt"> <tag name="email" weight="20" /> <tag name="feup" weight="20" /> </site> </sites> </Response> </RR>
The Response element gets information from a MySQL DB and this is only an example. I'm creating a XSL file to transform this XML output in XHTML with the results in a table, something like:
---------------------- | URL | TAG | WEIGHT | ----------------------
One URL can have several TAGS. URL is an attribute of the element site. What I want his to let the client click on the table tittle (url, tag or weight) to sort the elements using that field, if the elements are already sorted with that field then the order is toogle (ascending and descending). I want to do this in the client side using Ajax but I can't figure out how to do this. How can I get the XML elements without querying the MySQL server again? Can I do this? Does javascript has some object to retrieve XML elements like this? I'm using CGI::Ajax, a Perl module, but if I use this I'll have to querie MySQL server again to resort the elements (at least I think I have to...) Can someone point me out some kind of solution to this? I'm a newbie in using Ajax and XML. Thanks, Bruno

Replies are listed 'Best First'.
Re: Perl + Ajax + XML + MySQL
by pKai (Priest) on Dec 13, 2006 at 12:23 UTC
    The idea of AJAX is to initiate (asynchronous) requests per Javascript to update part(s) of an already loaded page, thus avoiding a full page reload.

    So, you have server side processing in AJAX.

    Also it is my understanding that after the XSLT transformation you are dealing with the resulting DOM tree in your browser (Javascript).

    Typically the task to sort (web) client side is addressed fully client side inside the DOM (with Javascript).

    A solution to it (going far beyond your request) may look like this.

    A reply falls below the community's threshold of quality. You may see it by logging in.
Re: Perl + Ajax + XML + MySQL
by dorward (Curate) on Dec 13, 2006 at 11:36 UTC

    I want to do this in the client side using Ajax but I can't figure out how to do this.

    Which would make this a JavaScript question, not a Perl question.

    Perhaps you should try a forum about ... oh wait, you have.

      dorward, your sarcasm makes me smile

      @_=qw; ask f00li5h to appear and remain for a moment of pretend better than a lifetime;;s;;@_[map hex,split'',B204316D8C2A4516DE];;y/05/os/&print;