Ich habe eine form
innerhalb einer div
.TokenMismatchException in Laravel 5.0
<div class="form-container col-sm-12 container-fluid">
<meta content="{{ csrf_token() }}" name="_token">
<form class="form" id="register_form" method="POST" novalidate>
<!-- <input type="hidden" value="{{ csrf_token() }}" name="_token" id="token"> -->
<div class="form-group" id="error_msg"></div>
<div class="form-group name">
<input type="text" class="form-control input-sm" role="group" id="name" placeholder="Name" name="name" required>
</div>
<div class="form-group email">
<input type="email" class="form-control input-sm" id="email" placeholder="Email" name="email" required>
</div>
<div class="form-group contact_no">
<input type="text" class="form-control input-sm" id="contact_no" placeholder="Contact No" name="contact_no" required>
</div>
<div class="form-group select_level">
<select class="form-control input-sm" name="level_interested" id="level_interested" required>
<option class="form-control" selected disabled value="">Level Interested</option>
<option class="form-control" value="bachelor">Bachelor</option>
<option class="form-control" value="masters">Masters</option>
<option class="form-control" value="phd">Phd</option>
<option class="form-control" value="nursing">Nursing</option>
</select>
</div>
<div class="form-group select_country">
<select class="form-control input-sm" name="country_interested" id="country_interested" required>
<option class="form-control" selected disabled value="">Country Interested</option>
<option class="form-control" value="usa">U.S.A</option>
<option class="form-control" value="australia">Australia</option>
<option class="form-control" value="canada">Canada</option>
<option class="form-control" value="india">India</option>
<option class="form-control" value="new_zealand">New Zealand</option>
</select>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success btn-sm">Register</button>
</div>
</form>
Wenn die form
vorgelegt wird, wird die Validierung weitergeführt. Nach erfolgreicher Validierung verwende ich Ajax
, um Eingabedaten zu senden und eine Warnmeldung als Antwort anzuzeigen.
form.submit(function() {
if(validateName() & validateEmail() & validateContact_No() & validateLevel() & validateCountry()) {
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="_token"]').attr('content')
}
});
$.ajax({
type : 'post',
url: "{{ route('save_registry') }}",
data: {
'name' : name.val(),
'email' : email.val(),
'contact_no' : contact_no.val(),
'level_interested' : level_interested.val(),
'country_interested' : country_interested.val(),
},
success : function(data) {
alert(data);
}
});
return true;
} else {
$('#error_msg').text("Please Enter Details Correctly").show().addClass('text-danger').addClass('text-center');
return false;
}
Das ist mein function
in einem Controller
die Anfrage zu bearbeiten.
public function save_registry(Request $request)
{
$new_registry = new Register();
$email = Register::where('email','=',$request->email)->exists();
if($email==true)
{
return 'Email already exists';
}
else{
$new_registry -> name = $request -> name;
$new_registry -> email = $request -> email;
$new_registry -> contact_no = $request -> contact_no;
$new_registry -> level_interested = $request -> level_interested;
$new_registry -> country_interested = $request -> country_interested;
$new_registry->save();
return 'Registered Successfully';
}
}
Nachdem ich die form
einreichen, alert knallte wird. Und nachdem ich die Warnung geschlossen habe, bekomme ich TokenMismatchException
Fehler. Ich erhalte diesen Fehler nur, wenn der form's method
POST
nicht in GET
ist. Gibt es also eine Lösung, um den Fehler nicht zu bekommen, wenn method
POST
ist?
Lesen der Dokumente haben Sie versucht X-CSRF-TOKEN anstelle von X-CSRF-Token nicht sicher, ob die Kopfzeile Groß-und Kleinschreibung ist –
Header ist nicht Groß-und Kleinschreibung. Ich erhalte nur 'TokenMismatchException', nachdem das 'Formular' erfolgreich abgeschickt wurde. 'Form'-Daten werden ebenfalls erfolgreich in die Datenbank eingefügt. 'Alert' mit dem Nachrichtenformular' controller's Funktion erscheint ebenfalls. Aber nachdem ich die "Warnung" geschlossen habe, bekomme ich 'TokenMismatchException'. Wenn 'token' nicht übereinstimmte, hätte ich den Fehler direkt nach dem' submit' erhalten, nicht nach dem Schließen des 'alert'. –
klingt wie Sie brauchen, um zu verhindern, dass das ursprüngliche Formular dann reicht, fügen Callback-Variable e, um Funktion zu senden und 'e.preventDefault();' –