Eddie: Ist das möglich: Formular senden, Bild als Antwort erhalten...

Hallo allerseits,

bevor ich das ausprobiere, würde ich gerne wissen, ob es nicht vielleicht von Anfang an zum Scheitern verurteilt ist... Ich plane eine Seite, die Folgendes enthält:

<form ... >
    <input type="text" id="BildFarbe">
</form>
<img id="Bild" src="leer.gif">

Mittels Ajax möchte ich die eingegebene Hex-Farbe übermitteln, serverseitig ein Bild generieren und dann im Bild-Tag anzeigen. Dass das geht, ist erstmal klar. Hier der Normalfall:

  1. Request:  CLIENT übermittelt per Ajax das Formular
  2. Response: SERVER übermittelt per Ajax die Bild-ID (also Text!)
  3. Request:  CLIENT aktualisiert den img-Tag, und hat ggf. die Bild-ID zur weiteren Verwendung.
  4. Response: SERVER liefert das Bild.

Ich aber bräuchte es folgendermassen:

a) Request:  CLIENT aktualisert zuerst den img-Tag und schickt direkt das Formular mit!
b) Response: SERVER generiert das Bild und liefert es zurück. Ggf. macht er eine Weiterleitung auf den Bildnamen (samt ID). Fertig! Ggf. kann der CLIENT den Bildnamen auslesen.

Meint ihr, das wird ein Problem?

Danke für eure Hilfe,
Eddie

--
Old men and far travforelers may lie with authority.
  1. Nabend!

    Aeh... Seh ich das richtig, due willst das IMG aktualisieren, bevor der Server irgendwas verarbeitet hat? Das geht natuerlich, aber womit?

    Dann haettest Du ja die Antwort bevor die die Frage gestellt hast.

    Oder versteh ich was nicht an deiner Beschreibung?

    1. Hallo Steel,

      Aeh... Seh ich das richtig, due willst das IMG aktualisieren, bevor der Server irgendwas verarbeitet hat? Das geht natuerlich, aber womit?

      Dann haettest Du ja die Antwort bevor die die Frage gestellt hast.

      Nicht ganz: im Grunde möchte ich nur eine (imho) redundante Request-/Response-Folge einsparen. Statt zuerst Text zurückzubekommen (nämlich die Bildadresse), nur um diesen dann ins <img>-Tag einzusetzen, möchte ich direkt ein Bild zurückbekommen.

      Fallstricke dabei:
      a) ist es möglich, ein Formular zu senden und statt Text "content-type: image/gif" zu erhalten?
      b) ist es möglich, die Formulardaten an ein <img>-Tag zu übergeben? Genau genommen wäre das ja dann auch garkein Ajax...
      c) ist es möglich, den Dateinamen des neuen Bildes (der ja durch serverseitige Weiterleitung realisierbar wäre) aus dem <img>-Tag auszulesen?

      Eddie

      --
      Old men and far travforelers may lie with authority.
      1. b) ist es möglich, die Formulardaten an ein <img>-Tag zu übergeben? Genau genommen wäre das ja dann auch garkein Ajax...

        Genau. Gar kein Ajax.

        Dubrauchst auch kein Formular abschicken. Das unterbindest Du am Besten. Da Du eh mit Java arbeitest, ist es kein Problem ein Javascript zu schreiben, das die Source des Bildes tauscht. Wenn Du das hinbekommst, rufst Du statt einer Grafik ein Script auf, dem du die Parameter aus dem Formular uebergibst. Das Script muss dann nur noch ein gueltiges Bild ausliefern.

        Genau als wuerde man <img src='mysript.php'> schreiben.

        1. Hallo Steel,

          Dubrauchst auch kein Formular abschicken. Das unterbindest Du am Besten. Da Du eh mit Java arbeitest, ist es kein Problem ein Javascript zu schreiben, das die Source des Bildes tauscht. Wenn Du das hinbekommst, rufst Du statt einer Grafik ein Script auf, dem du die Parameter aus dem Formular uebergibst. Das Script muss dann nur noch ein gueltiges Bild ausliefern.

          Sehr cool, so mach ich das!!! :-))

          Genau als wuerde man <img src='mysript.php'> schreiben.

          Und dann per JS auf id="mysript" zuzugreifen ist ja wohl auch kein weiteres Problem mehr.

          Ganz vielen Dank dir, die kurze Diskussion war sehr augenoeffnend! Typischer Fall von "ich komm bestimmt drauf, muss aber erst drueber reden" ;-)
          Eddie

          --
          Old men and far travforelers may lie with authority.
          1. Hi!

            Sehr cool, so mach ich das!!! :-))

            Am Besten mit GET Parametern. generier also sowas wie: mybild.php?farbe=FF00FF das dann vom Script verarbeitet wird.

            Genau als wuerde man <img src='mysript.php'> schreiben.
            Und dann per JS auf id="mysript" zuzugreifen ist ja wohl auch kein weiteres Problem mehr.

            Ich hoffe du verwechselst jetzt nich ID mit src. Aber wenn die ID 'myscript' heissen soll... 'myPic' hielte ich fuer besser.

            Beispiel:
            window.document.images[Bildnr].src = "script.php?farbe=ff00ff";

  2. Ist möglich, aber dafür benötigst du kein AJAX.

    Als hier der Code für einen Beispiel-Bildgenerator

      
    <?php  
    Header ("Content-type: image/gif");  
    $im = imagecreate (400, (int)$_REQUEST['size']);  
    $back = ImageColorAllocate ($im, $_REQUEST['r1'], $_REQUEST['g1'], $_REQUEST['b1']);  
    $cl = ImageColorAllocate ($im, $_REQUEST['r2'], $_REQUEST['g2'], $_REQUEST['b2']);  
    ImageTTFText ($im, (int)$_REQUEST['size'], 0, 0, $_REQUEST['size'], $cl, "./lib/arial.ttf",  
                  $_REQUEST['text']);  
    ImageGif ($im);  
    ImageDestroy ($im);  
    ?>  
    
    

    Dan hier ein Formular:

      
    <form action="image.php">  
    Vordergrund:  
    Rot: <input type="text" name="r1" />  
    Gr&uuml;n: <input type="text" name="g2" />  
    Blau: <input type="text" name="b1" />  
    Hintergrund:  
    Rot: <input type="text" name="r2" />  
    Gr&uuml;n: <input type="text" name="g2" />  
    Blau: <input type="text" name="b2" />  
    Text: <input type="text" name="text" />  
    Gr&ouml;&szlig;e: <imput type="text" name="text" />  
    <input type="submit" value="Bild erzeugen" />  
    
    

    Kann man abändern und verbessern...
    aber ein Ansatz

    Schönen Tag noch
    Johannes

    1. Hallo Johannes,

      sehr cool, danke dir!!!

      Eddie

      --
      Old men and far travforelers may lie with authority.