我已设置要上传图片的表单。我以前使用的是DropZone.js,它工作正常,并与ajax调用一起发送了CSRF令牌。一切服务器端都很好,但是当尝试在没有DropZone的情况下执行此操作时,出现令牌不匹配错误。
这是我的AJAX呼叫:
$(document).on('submit', ".hidden-image-upload", function(e){
e.preventDefault();
$.ajax({
url:'/project/uploadImage',
data:{
data:new FormData($("#upload_form")[0]),
},
dataType:'json',
async:false,
type:'post',
processData: false,
contentType: false,
success:function(response){
console.log(response);
},
});
});
这是HTML:
<form method="POST" action="http://localhost/project/create" accept-charset="UTF-8" class="hidden-image-upload">
<input name="_token" type="hidden" value="5lgtt8AgbeF3lprptj8HNXVPceRhoJbqBeErBI1k">
<input class="cover-image-upload-button" name="file" type="file">
</form>
我该如何整理我的AJAX呼叫/ Laravel以便一起工作?
您可以使用$ .ajax在标头中发送令牌。
$(document).on('submit', ".hidden-image-upload", function(e){
e.preventDefault();
$.ajax({
url:'/project/uploadImage',
data:{
data:new FormData($("#upload_form")[0]),
},
headers: {
'X-CSRF-Token': $('form.hidden-image-upload [name="_token"]').val()
}
dataType:'json',
async:false,
type:'post',
processData: false,
contentType: false,
success:function(response){
console.log(response);
},
});
});
在最坏的情况下,禁用该路由的CSRF检查,只需在$ app / Http / Middleware / VerifyCsrfToken.php内部的数组中添加该路由即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句