Ik heb een formulier dat automatisch verstuurd moet worden nadat er iets is aangeklikt:


<?php
	echo "<form id=\"titels-".$draailist->draaiboekID."\">";
	echo "<td><input type=\"hidden\" name=\"draaiboekID\" value=\"$draailist->draaiboekID\">";
	echo "<select class=\"btn btn-default btn-xs\" onchange=\"this.form.submit()\">";
	echo "<option value=\"0\"><i class=\"fa fa-refresh\"></i> UPDATE TITELS</option>";
	echo "<option value=\"1\"><i class=\"fa fa-refresh\"></i> UPDATE NIEUWS</option>";
	echo "<option value=\"2\"><i class=\"fa fa-refresh\"></i> UPDATE TAFELGASTEN</option>";
	echo "</select></td>";
	echo "</form>";
?>


Maar in plaats van dat de pagina moet refreshen moet het als volgt weggestuurd worden:


<script>
$().ready(function() {
    // als het formulier #theForm wordt gesubmit...
    $('form#titels-<?php echo $draailist->draaiboekID; ?>').submit(function(e) {
        // vang het submit event af, jQuery/AJAX handelt dit immers af
        e.preventDefault(); // het default gedrag is dat het formulier gePOST wordt, en dat willen we niet
        $('#postFeedResult').hide();
$.post(
    'shared/push-tv-titels.php',     // het script waar je naartoe POST
    $('#titels-<?php echo $draailist->draaiboekID; ?>').serialize(),                 // verzamel alle form data in 1x (naam, content)
    null,                            // we gebruiken .done() dus deze is niet nodig
    'json'                             // geef een "hint" over het type van de terug te ontvangen data
)
.done(function( data ) {
	alert(data);
})
.fail(function( data) {
	alert(data);
})
    });
});
//]]>
</script>


Hoe voorkom ik dat toch de pagina refreshed? Met een submit-button werkt onderstaande code immers wel.
Je PHP-script lijkt wel een echo-put met die onnodige echo's voor een lap HTML. Haal dit gewoon buiten PHP-tags, en dan is die escaping van je quotesook niet nodig.

Als ik zo zie zou je pagina helemaal niet mogen refreshen met die AJAX-request in combinatie met je e.preventDefault().
Klopt, maar toch gebeurt het...
Kan ik het anders programmeren misschien?
Haal die in-line onchange er eens uit? Die overruled de losse events van je jQuery.
Je stuurt het idd niet langs jQuery, schrijf op eenzelfde wijze een onchange voor de select in jQuery die een form-submit triggert.
zoiets dus

Reageren