So jetzt hab ich es wieder zum Formular umgebaut, mit Contao RequestToken:
HTML-Code:
<form name="estate_filter_extended" method="post" class="filterForm">
<input type="hidden" id="estate_filter_extended_REQUEST_TOKEN" name="REQUEST_TOKEN" required="required" value="3af7224279d4.SxbYl0EG_1ypCwypt-rnNqneCqOkx3vXWGU4WweL7tA.OnmQ_SRokDbaYljg8aeuU9urW_PlmBCUHl16dlbto5M6L7WvcFONbvFRTQ">
<div><label class="" for="estate_filter_extended_estateType">Objektart</label><select id="estate_filter_extended_estateType" name="estate_filter_extended[estateType]" class="select"><option value=""></option><option value="haus" selected="selected">Haus</option><option value="wohnung">Wohnung</option><option value="grundstueck">Grundstück</option><option value="buero_praxen">Büro/Praxis</option><option value="einzelhandel">Einzelhandel</option></select></div><div><label class="" for="estate_filter_extended_postal">PLZ</label><input type="text" id="estate_filter_extended_postal" name="estate_filter_extended[postal]" class="postal"></div><div><label class="" for="estate_filter_extended_postalRadius">Radius</label><select id="estate_filter_extended_postalRadius" name="estate_filter_extended[postalRadius]" class="select"><option value=""></option><option value="5">5 km</option><option value="10" selected="selected">10 km</option><option value="15">15 km</option><option value="25">25 km</option><option value="50">50 km</option></select></div>
<input type="hidden" id="estate_filter_extended__token" name="estate_filter_extended[_token]" value="5a68cf389cd743eaaabd9b12b.GCB_r2zt-xk_Oh6ZiX6koyqAVg13S5alheAcHyjkpZk.aWZM3Cmjs1V0TlDq2wfg5nDxYzsaJf_n8oExTGuF9qFSGT3aOYyuag9KTw">
</form>
Scriptmäßig verarbeite ich es wie folgt:
HTML-Code:
<script>
document.addEventListener("DOMContentLoaded", function(event) {
$(document).ready(function() {
$("form.filterForm").on('change', ':input', function(e) {
var instantform = $('form.filterForm');
$.ajax({
url: '{{ currentPath }}?send=true',
type: 'POST',
dataType: 'json',
data: instantform.serialize(),
async: true,
success: function(data, status) {
console.log(data)
},
error : function(xhr, textStatus, errorThrown) {
console.log(errorThrown)
}
})
event.preventDefault();
});
});
});
</script>
Der Request wird auch richtig abgesetzt, das Formular nimmt es entgegen und dort verarbeite ich es wie folgt:
PHP-Code:
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
return new JsonResponse(
[
'message' => 'Bitte geben Sie eine korrekte PLZ ein'
],
200
);
}
Aber leider wirft es mir immer noch den Fehler mit unexpected Token....