onblur php skript ausfüren?

Brauni

Erfahrenes Mitglied
Hallo

Würde mich sehr freuen, wenn einer von euch eine Idee für mein Problem hätte.
Per onblur kann ich von einem Input Feld einen Klick auf einen Button machen:
Code:
onblur="this.form.xxx.click()"
xxx ist der Name vom Button.

Weis vielleicht wer von euch, wie ich ein php Skript ausführen kann anstatt auf den Button zu klicken?
 
Wenn das Skript nur etwas ausführen soll, ist das wohl die einfachste Lösung:
Code:
<script type="text/javascript">
<!--
function insert()
{
x=new Image();
x.onload=function(){history.back();}
x.src='pfad/zum/skript.php?'+new Date().getTime();
}
//-->
</script>
<input onblur="insert()">
Zur Erklärung:
Es wird ein Image-Objekt erzeugt, dem als src der Pfad zum PHP-Skript übergeben wird.
Das alleine bewirkt schon die Ausführung des PHP-Skriptes, da eine HTTP-Anfrage an selbiges gestellt wird.
Wichtig bei der Sache: Wenn das INSERT erfolgreich war, sollte dein PHP-Skript ein echtes Bild an den Browser senden, denn nur dann feuert der onload-Event des Image-Objektes.
Wie ein PHP-Skript ein echtes Bild ausgibt?:
Lasse das Skript eine Content-Type-Header senden, und lese dann per readfile() irgendein Bild vom Server aus(am besten ein kleines von der Dateigrösse her). Der Content-Type-Header sollte dem Grafik-Typ des ausgelesenen Bildes entsprechen.

War dein INSERT erfolgreich und es wurde ein echtes Bild ausgegeben, dann feuert der onload-Event und der Browser bewegt sich zurück in der History.
War dein INSERT nicht von Erfolg gekrönt, gebe einfach irgendwas aus, bspw.:
PHP:
die('nix')
...da kein echtes Bild gesendet wird, feuert kein onload und es passiert nichts.
 
servus

wo das funktioniert super, nur er übernimmt mir nicht den Inhalt vom Textfeld
x.src='speichern.php?name=$name';
 
Zuletzt bearbeitet:
Code:
<script type="text/javascript">
<!--
function insert(o)
{
x=new Image();
x.onload=function(){history.back();}
x.src='pfad/zum/skript.php?'+o.name+'='+encodeURIComponent(o.value)+'&'+new Date().getTime();
}
//-->
</script>
<input onblur="insert(this)" name="name">
 
es wird in die DB schon falsch hineingeschrieben.

EDIT:
Bin eben drauf gekommen, das wenn ich eine Eingabe mit Umlauten mache, und Enter drücke wird es richtig in die DB gepsichert.
Allerdings kommt diese Meldung:
GIF89a ? ??????????!??????,???? ? ???????c+?;

Beim rauspringen vom Textfeld mit Tabulator, stimmen die Umlaute nicht mehr.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück