Sorry I should've said this earlier. JSON is more like an alternative to XML. To use JSON here's an example from a perl script called from an XMLHttpRequest. That's basically your standard AJAX technique.

This method is described here. If you were still interested in trying an XML solution you can look here. Granted that's a php solution, but you'd just print out the XML as i do in the first snipet of code with the JSON.

all in all it's just a matter of getting a string back from your perl script. Then using the request.responseText. Then doing whatever you want to that string; whether it's parsing XML or evaluating it to create a JavaScript Object. If your giving a string to your perl script, that's when you might use the JSON module to interpret the string into a perl object. If you still wanted to go the XML route, it's pretty much the same concept, except use an XML module to create/dump perl object from/to XML, then have the JavaScript interpret it. Looks like there's plenty XML modules on CPAN. Hope this helps.

Employee.pcgi

in this @employees is just an array of hashes
#header required to properly recieve text/html response print "Content-type: text/html\n\n"; print '{"employees" : [' . "\n"; foreach my $employee(@employees) { print ' { "name" : "' . $employee->{name} . '",' . "\n" . '"company" : "' . $employee->{company} . '",' . "\n" . '"email" : "' . $employee->{email} . '",' . "\n" . '"website" : "' . $employee->{website} . '"'. "\n" . '},' } print ']}';

And here's what the javascript might look like.

employee.js
//loading XML (JSON) data function loadXML(url) { //creating XMLHttpRequest Object... IE Only try{ req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { req = false; } } alert('contacting ' + url); //opening url req.open("GET",url, true); //when data is recieved, goto popuplate_list() req.onreadystatechange=populate_list; //GET method, send null req.send(null); } //populates a JSON object of employees function populate_list() { //response completed if(req.readyState == 4) { //response ok if(req.status == 200) { //evaluate string into a JSON object var records = eval('('+req.responseText+')'); //display records show_list(records); } } } //showing employees function show_list(records) { var size = records.employees.length; var employee_list = records.employees; for(var i=0; i<size; i++) { alert('Name ' + employee_list[i].name + '\n' + 'Company ' + employee_list[i].company + '\n' + 'Email ' + employee_list[i].email + '\n' + 'Website ' + employee_list[i].website); } } //contacting perl script loadXML('../backend/script/employee.pcgi');

In reply to Re^3: perl javascript XML by ickyb0d
in thread perl javascript XML by blenkhn

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.