• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Formularverabeitung AJAX/Prototype und PHP

Demo

Süssreinette (Aargauer Herrenapfel)
Registriert
02.04.04
Beiträge
411
Ich hab eine kleine Frage zur Thematik AJAX resp. Prototype.

Fangen wir mal von vorne an. Ich habe eine Liste mit Eintraegen (diese Eintraege bestehen aus einer Ueberschrift und einem Textkoerper, in der Liste werden aber nur die Ueberschriften angezeigt.). Wenn man auf die einzelnen Elemente der Liste klickt, oeffnet sich ein neues DivElement, das in Abhaengigkeit der Eintragsid den jeweiligen Textkoerper zeigt.
In diesem Div ist ein Formular eingearbeitet, die Textarea zeigt den Textkoerper. Man kann also den Eintrag bearbeiten.
Nun habe ich das Problem, dass das Formular immer die Seite im "action" Attribut aufruft.

Der Code des Formulars:

Code:
/** schnipp **/
	$str .= "<form action='../helper/news_ajax.php' method='POST'>";
		$str .= "<input type='hidden' value='".$key['nid']."' name='id'/>";
		$str .= "<textarea name='news_text'>".htmlentities($key['newsText'])."</textarea>";
		$str .= "<input type='submit' name='ajax_submit' value='speichern' onclick='kat_save'/>";
		$str .= "</form>";

Die JavaScriptfunktion:
Code:
function kat_save(){
	var pars = 'cid='+escape($F('bews_text'))+'&nid='+escape($F('id'));
	alert(pars);
	new Ajax.Request("helper/kat_ajax_save.php", {
	onSuccess: end_kat_save,
	 onFailure : function(resp) {
	   alert("Oops, there's been an error.");
	 },
	 parameters : pars
	});
}

Nun ist die Frage, wie ich mit Prototype solche eine Formularverabeitung im Hintergrund laufen lassen kann ? Das entsprechende PHP Skript zum Speichern in der Datenbank funktioniert.

Da ich im Anhang einen Screenshot poste, kann ich vielleicht das Ziel noch verdeutlichen: Nach Klick auf den 'Speichern' Button, soll sich das 'div' Element schliessen (display.style="none").

Danke fuer eure Hilfe.
 

Anhänge

  • screenshot1.png
    screenshot1.png
    215,1 KB · Aufrufe: 155

Nogger

Damasonrenette
Registriert
05.11.05
Beiträge
494
Du mußt die Standardaktion des Knopfs unterdrücken.

Code:
onclick="kat_save.bindAsEventListener(this)"

function kat_save(ev){
...
Event.stop(ev);
}
 

Sid.TUX

Reinette de Champagne
Registriert
20.08.05
Beiträge
414
Einfach die Action wegnehmen, also leer lassen und wie von Nogger schon geschrieben nen onclick Befehl mit dem JS Aufuruf rein machen, dann läd sich keine neue Seite sondern das JS holt im HIntergrund Daten.