我有一个表单来上传图片。我以前使用过DropZone.js,它工作得很好,并将CSRF令牌与ajax调用一起发送。所有服务器端都很好,但是在不使用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来一起工作?
发布于 2015-11-15 20:51:10
您可以使用$.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/ $except /verifyCsrfToken.php中添加数组中的路由即可。
发布于 2015-11-15 15:09:19
尝尝这个。您还必须将CSRF令牌与FormData一起传递:
$(document).on('submit', ".hidden-image-upload", function(e){
e.preventDefault();
var data = new FormData($("#upload_form")[0]);
data.append('_token', $('input[name="token"]').val());
$.ajax({
url:'/project/uploadImage',
data:{
data: data,
},
dataType:'json',
async:false,
type:'post',
processData: false,
contentType: false,
success:function(response){
console.log(response);
},
});
});
https://stackoverflow.com/questions/33725939
复制相似问题