On Mar 11, 2006, at 3:43 PM, Alex wrote:

> Hi everyone,
> I'd like to use a ruby script to generate an image (directed graph)  
> and
> sand it to an ajax-like javascript script that display the image in  
> the
> browser.
> I tryed to do it but what the browser display only a lot of strange
> characters. I think it's a headers problem but I really don't know how
> to solve it.
> When I run the script in a shell and redirect the input to a file, the
> generated image is good
> What is the best way to send the image to the browser?
> Any idea is welcome,
> thanks in advance.
>
> Alex
>
> #this is the ruby script#
>
> require "graphviz"
> g = GraphViz::new( "G" )
> main  = g.add_node( "main" )
> parse = g.add_node( "parse" )
> g.add_edge( main, parse )
> puts "Content-Type: image/png"
> puts
> g.output( "output" => "png" )
>
>  ############## This is the client-side javascript to display the
> gener0ated image ##############
>
> <script language="javascript" type="text/javascript">
> var request = false;
> try {
>   request = new XMLHttpRequest();
> } catch (trymicrosoft) {
>   try {
>     request = new ActiveXObject("Msxml2.XMLHTTP");
>   } catch (othermicrosoft) {
>     try {
>       request = new ActiveXObject("Microsoft.XMLHTTP");
>     } catch (failed) {
>       request = false;
>     }
>   }
> }
>
> if (!request)
>   alert("Error initializing XMLHttpRequest!");
>
> /****************************************************/
>
>
> function updatePage() {
>      if (request.readyState == 4) {
>        if (request.status == 200) {
>          var response = request.responseText;
>          document.getElementById("address").innerHTML ="<img
> src="+response+" />";
>        } else
>          alert("status is " + request.status);
>      }
>    }
>
> function getAnswer() {
>      var url ="nph-script.rb";
> 		 request.open("GET", url, true);
> 		 request.onreadystatechange = updatePage;
>      request.send(null);
>    }
>
> </script>
> ################################################
>
>

Actually forgot what i just said, you're doing this all wrong. src  
points to a url, not the actual image data. Ajax is also probably  
pretty silly for this. Do this in your html:



no javascript, no ajax, just good old fashioned cgi. If you do want  
this graph to be more dynamic than that, you're going to have to  
learn how the img tag works (like I said src is not image data its a  
url).