Logan Capaldo
3/11/2006 9:55:00 PM
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:
<img src="nph-script.rb">
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).