Ich zeig Dir mal schnell wie ich solche Ajax-Requests mit Prototype abschicke.
HTML-Code:
<form onsubmit="return false;" action="deine_seite.php" method="post" id="deine_form_id">
<!--
Deine Input-Felder usw.
-->
<input type="submit" name="save" id="save" />
</form>
<script type="text/javascript" language="javascript">
$('save').observe('click', saveData);
function saveData(event) {
new Ajax.Request('deine_seite.php',
{
method: 'get',
parameters: $('deine_form_id').serialize(),
onSuccess: handleResponse
});
}
function handleResponse(response) {
if (!response.responseText.isJSON()) {
$('updateErrors').innerHTML = "";
$('updateErrors').innerHTML = "<p class='success'>"+response.responseText+"</p>";
$('updateErrors').style.display = "block";
return;
}
var data = response.responseText.evalJSON();
var error = "<p class='error'>";
if (typeof(data) == 'object') {
for (var item in data) {
error += data[item] + "<br />";
}
} else {
for (var i = 0; i < data.length; i++) {
error += data[i] + "<br />";
}
}
error += "</p>";
$('updateErrors').innerHTML = error;
$('updateErrors').style.display = "block";
}
</script> Das schöne daran, Du musst nicht die ganzen Daten manuell angeben, sondern serialisierst das ganze mit $('deine_form_id').serialize(). Somit kannste Deine Form, ohne dass Du die
JS-Funktionen erweitern musst, um weitere Felder erweitern.
Die handleResponse-Methode dient bei mir dazu, Meldungen über den Status auszugeben, das können Error-,Warning-& Success-Messages sein.
Serverseitig darfst Du natürlich nur das zurück geben was Du ausgeben willst.