[PHP]/[JavaScript] php-funktion mit javascript ins action-form schreiben
folgende lage:
- ein php dokument mit einem formular
- ein weiteres php dokument mit diversen mysql-funktionen zum includen
- ein javascript dokument mit diversen funktionen zum einbinden
in meinem ersten php dokument erstelle ich ein formular welches per submit die inhalte der eingetragenen felder in meine datenbank schreibt. über dem formular wird die php datei mit den funktionen includet und zwei anderen funktionen:
- connectToDatabase();
- readFromNews();
nun möchte ich mit javascript eine funktion schreiben mit der ich den inhalt meines action-attributs im form-tag ersetzen kann. mehrere varianten hab ich nun schon ausprobiert aber alle bleiben erfolglos da der inhalt nicht weitergegeben wird. lasse ich das js weg und schreibe die php-funktion direkt ins form-tag wird diese funktion jedes mal aufgerufen sobald die seite vom server geladen wurde was keinen sinn machen würde denn gepostet soll nur werden wenn der submit-button gedrückt ist.
HTML-Code:
<form name="formular" method="post" action="javascript:goToPhpFunction();">
Code:
function goToPhpFunction(){
//document.getElementById('formular').action.value = '<?php insertIntoNews(); ?>';
document.form.action = 'blubb.php';
};
PHP-Code:
function insertIntoNews(){
mysql_query(
"INSERT INTO news (title,content,mood) VALUES (
'".$_POST[title]."',
'".$_POST[content]."',
'".$_POST[mood]."'
)"
);
weiß jemand rat um die javascript-funktion?
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist völig nutzlos, solange man nicht vorhat, das JavaScript-Framework Prototype einzubinden - und das wäre hier Overkill. Seht euch mal die angehängte Datei an; die verwende ich. (Und man sieht mal wieder schon, daß für den IE Extrawürste nötig sind, wenn auch immerhin nur für IE <= 6.) Ist zwar nicht so extrem robust (falls die Anfrage fehlschlägt tut mein Code einfach gar nichts) aber er erfüllt seinen Zweck.
Hier ein minimales Beispiel, wie die Funktion verwendet wird:
HTML-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Bla.</title>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<div id="target">
Hier wird hinterher der Inhalt von <i>andereDatei.html</i> stehen.
Dieser Text wird dann verschwinden.
</div>
<div>
<a href="javascript:fetchData('andereDatei.html', 'target')>Test</a>
</div>
</body>
</html>
Wenn du auf den Link klickst wird der Inhalt von andereDatei.html in das <div> mit der id target geladen. Falls du eine PHP-Datei lädst so wird diese erst von Server ausgewertet (tatsächlich stellt dein Browser eine ganz normale Anfrage nach der Datei und fügt die Antwort des Servers dann in die aktuelle Seite ein).
Du kannst per AJAX allerdings nur ganze Tags mit Inhalt füllen, also sollte das PHP-Skript, das du aufrufen willst, den gesamten Inhalt der zu füllenden Tags (in diesem Fall also effektiv das ganze Formular) zurückgeben.