我在div
中有form
。Laravel 5.0中的TokenMismatchException
<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>
當form
提交,驗證進行的。驗證成功後,我使用Ajax
發送輸入數據並顯示警報消息作爲響應。
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;
}
這是我在Controller
function
來處理請求。
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';
}
}
當我提交form
後,彈出警告。關閉警報後,我收到TokenMismatchException
錯誤。我只有當form's method
是POST
而不是GET
時纔會出現此錯誤。那麼當method
是POST
時,有沒有解決方案可以避免錯誤?
閱讀文檔您是否嘗試過'X-CSRF-TOKEN'而不是'X-CSRF-Token'不確定頭是否區分大小寫 –
頭不區分大小寫。 「form」成功提交後,我只得到'TokenMismatchException'。 '表格'數據也被成功插入到數據庫中。 'Alert'和'controller's function'的信息也會彈出。但是在關閉'alert'後,我得到'TokenMismatchException'。如果'token'不匹配,我會在我點擊'submit'後立即得到錯誤,而不是在關閉'alert'後。 –
聽起來像你需要防止提交原始表單,然後添加回調變量e來提交函數並使用'e.preventDefault();' –