Du bist nicht angemeldet (anmelden)
Seite 1
Erledigt: form submit / target container angeben?
Es gibt bei jQuery ja eine Funktion mit der man eine Seite in einen Container laden kann:
zusätzlich kann man dort den Container (#gewuenschte_inhalte) der Seite angeben, die man in den #zielcontainer laden möchte (um z.B. nicht die Header, etc mitreinzuladen)
Gibt es eine Möglichkeit das ganze für form-submits zu machen? Also ein Form per jQuery abschicken, und nur einen Container der aufgerufenen Seite in einen Container der Seite zu laden, auf der das Form sitzt?
jQuery('#zielcontainer').load(target.html);
zusätzlich kann man dort den Container (#gewuenschte_inhalte) der Seite angeben, die man in den #zielcontainer laden möchte (um z.B. nicht die Header, etc mitreinzuladen)
jQuery('#zielcontainer').load('target.html #gewuensche_inhalte');
Gibt es eine Möglichkeit das ganze für form-submits zu machen? Also ein Form per jQuery abschicken, und nur einen Container der aufgerufenen Seite in einen Container der Seite zu laden, auf der das Form sitzt?
Ich weiß jetzt nich, ob ich deine Frage richtig verstanden habe. Meinst du sowas?
Also einfach die Felder des Formulars per load als Parameter übergeben.
$("form").submit( function(e) {jQuery('#zielcontainer').load('target.html #gewuensche_inhalte', { name: $("#name").val(), blub: $("#bla").val() });});
Also einfach die Felder des Formulars per load als Parameter übergeben.
das wäre auf jedenfall eine gute notlösung. müsste dann in der betreffenden target.html (bzw. ist das bei mir natürlich ein phpscript) alle $_POST durch $_GET ersetzen, oder?
lieber wäre es mir natürlich mit einer art:
lieber wäre es mir natürlich mit einer art:
$("form").submit( function(e) {jQuery('#zielcontainer').post('target.html #gewuensche_inhalte');});
Du kannst natürlich auch einfach die Parameter als GET an die URL hängen
Sollte auch gehen.
Alternativ könntest du auch in deiner Zieldatei die $_POST Variablen durch $_REQUEST ersetzen. Damit bekommst du sowohl $_POST als auch $_GET (und nebenbei auch noch $_COOKIE).
jQuery('#zielcontainer').post('target.html?name='+$("#name").val()+'&foo='+$("#foobar").val()+' #gewuensche_inhalte');
Sollte auch gehen.
Alternativ könntest du auch in deiner Zieldatei die $_POST Variablen durch $_REQUEST ersetzen. Damit bekommst du sowohl $_POST als auch $_GET (und nebenbei auch noch $_COOKIE).
löffler – danke für deine tipps. ich bin per zufall hierauf gestossen: http://api.jquery.com/jQuery.post/
…ausserdem steht da:
wenn man das kombiniert, bekommt man sowas in der art:
funktioniert
hab nur einen bug irgendwo drin… das aber in einem anderen topic
Quelltext in Zwischenablage kopieren
$.post("test.php", $("#testform").serialize());
…ausserdem steht da:
Example: Alert out the results from requesting test.php (HTML or XML, depending on what was returned).
Quelltext in Zwischenablage kopieren
$.post("test.php", function(data) {alert("Data Loaded: " + data);});
wenn man das kombiniert, bekommt man sowas in der art:
jQuery('#form input').change( function(){jQuery.post(jQuery('#form').attr('action'), //url holenjQuery('#form').serialize(), //daten ziehenfunction(data){var content = jQuery(data).find('#zielcontainer'); //aus der rückgegebenen seite den #zielcontainer speichernjQuery("#zeilcontainer").html(content); //einpflanzen});});
funktioniert
hab nur einen bug irgendwo drin… das aber in einem anderen topic
Kein Problem. Aber deine Lösung ist doch nichts anderes als
in umständlich.
(man könnte auch hier Problemlos change() statt submit() benutzen, dann brauchts das preventDefault() auch nicht mehr)
$("#form").submit( function(e) {e.preventDefault();$('#zielinhalt').load( $('#form').attr('action')+' #inhalt', $('#form').serialize());});
in umständlich.
(man könnte auch hier Problemlos change() statt submit() benutzen, dann brauchts das preventDefault() auch nicht mehr)
//edit: zu früh gefreut – load() kann anscheinend nur POST senden, wenn die daten als object übergeben werden. das macht serialize() anscheinend nicht.
serialize() hat damit erstmal nichts zu tun. Das serialisiert die entsprechenden Daten einfach, also packt sie kompakt zusammen.
Wenn man jetzt bei load() den Parameter data setzt, sendet das die Daten als POST. Aber da du bei deiner Lösung ja auch jQuery.post() anstatt jQuery.get() verwendet hast, bin ich davon ausgegangen, dass du dafür eine Lösung gefunden hast und die Daten als POST senden wolltest.
Da serialize() die Daten in die Form foo=1&bar=2 umwandelt, könntest du das aber auch einfach an die URL hängen:
Wenn man jetzt bei load() den Parameter data setzt, sendet das die Daten als POST. Aber da du bei deiner Lösung ja auch jQuery.post() anstatt jQuery.get() verwendet hast, bin ich davon ausgegangen, dass du dafür eine Lösung gefunden hast und die Daten als POST senden wolltest.
Da serialize() die Daten in die Form foo=1&bar=2 umwandelt, könntest du das aber auch einfach an die URL hängen:
$('#zielinhalt').load( $('#form').attr('action') + '?' + $('#form').serialize() +' #inhalt');
soweit ich das verstehe versendet .post() alle daten als POST, egal in welchem format sie eingespeist werden.
.load() sendet anscheinend standardmässig als GET, es sei denn man legt die daten als object vor.
wie müsste denn das .load() aussehen, damit es POST sendet?
.load() sendet anscheinend standardmässig als GET, es sei denn man legt die daten als object vor.
wie müsste denn das .load() aussehen, damit es POST sendet?
Huch sorry, ich hab deinen zweiten Beitrag irgendwie nicht richtig gelesen und bin davon ausgegangen, du wolltest es jetzt auch per GET senden. 
Ich bin eigentlich davon ausgegangen, dass wenn man bei load() den zweiten Parameter data setzt, immer per POST gesendet wird, egal in welcher Form die Daten geliefert werden, aber anscheinend ist dem nicht so. Wenn load() für POST ein Object erwartet, musst du serializeArray() benutzen. Damit gehts:
Ich bin eigentlich davon ausgegangen, dass wenn man bei load() den zweiten Parameter data setzt, immer per POST gesendet wird, egal in welcher Form die Daten geliefert werden, aber anscheinend ist dem nicht so. Wenn load() für POST ein Object erwartet, musst du serializeArray() benutzen. Damit gehts:
$('#zielinhalt').load( $('#form').attr('action') + ' #inhalt', $('form').serializeArray() );
