【发布时间】:2018-07-10 16:01:01
【问题描述】:
我试图在 laravel 中提交一个 ajax 帖子,但我对表单的 csrf 令牌有一些问题。在我的表单中,如果我在第一次提交表单时满足了我在 ajax 帖子 url 中设置的条件。但是,如果我提交表单并且在第一次尝试时故意使我在 ajax 发布 url 中设置的条件失败,如果我再次提交表单,我会在我的 ajax 错误日志中得到一个令牌不匹配异常。我需要在每个 ajax 帖子中刷新 csrf_token 吗?
下面是我的代码
JS
$(document).on('submit','.registration-form',function(e){
e.preventDefault();
var form = $(this);
var form_url = $(this).attr("action");
var form_values = $(this).serialize();
$.ajax({
url:form_url,
type:'POST',
data:form_values,
dataType: 'json',
async:false,
success: function(result){
console.log(result);
if(result['status']==true){
location.href = result['redirect'];
}
else{
form.find(".form-details").show().html(result['message']);
}
},
error: function(ts) {
console.log(ts.responseText)
}
});
});
HTML
<form action="{{ url('login') }}" method="POST" class="registration-form">
{{ csrf_field() }}
<input type="text" name="username" class="input" placeholder="Email">
<input type="password" name="password" class="input" placeholder="Password">
<button class="button is-redbox is-flat is-fullwidth">Login</button>
</form>
【问题讨论】:
-
也许您的
csrf_token每次提交时都会更改?我以前遇到过这个问题。这是由于我的会话没有“坚持”。试试console.log({{csrf_token()}}),每次刷新页面时它应该保持不变。
标签: javascript jquery ajax laravel csrf