我正在使用ajax提交表单数据,但在传递令牌时我收到此令牌不匹配错误。 这是我的代码片段:
var _csrfToken = $('meta[name=token]').attr('content');
var link = $('meta[name=url]').attr('content');
// $.ajaxSetup({
// headers: {
// 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
// }
// });
$('#upload_form').submit(function(e)
{
e.preventDefault();
var title = $('#title').val();
var designation = $('#position').val();
var category = $('#category').val();
var azimaData = {
name: title,
designation: designation,
category: category,
_token: _csrfToken
};
console.log(azimaData);
$.ajax({
method: 'POST',
url: link + '/@dashboard@/galleryImage/add_image',
data: azimaData,
//use contentType, processData for sure.
contentType: false,
processData: false,
success: function(msg) {
if(msg.status == success)
{
alert(msg.msg);
}
else
{
alert(msg.msg);
}
},
error: function(xhr) {
console.log(xhr);
}
});
});
其他Ajax请求在令牌问题上正常工作。我在哪里出错了?
答案 0 :(得分:0)
在将contentType和processData选项设置为false之后,您无法以对象形式发送数据。因此,在这种情况下,您可以通过序列化表单或创建新的FormData实例并手动将数据附加到其中来发送数据。
我已经编辑了你的代码。并使用FormData与令牌一起发送数据。
ls -ltr *xyz*
答案 1 :(得分:0)
从您的ajax请求中删除contentType: false
和processData:false
,尝试使用ajax请求。
$.ajax({
method: 'POST',
url: link + '/@dashboard@/galleryImage/add_image',
data: azimaData,
success: function(msg) {
if(msg.status == success) {
alert(msg.msg);
} else {
alert(msg.msg);
}
},
error: function(xhr) {
console.log(xhr);
}
});
答案 2 :(得分:-1)
更改您的meta name
。它应该是这样的
var _csrfToken = $('meta[name=_token]').attr('content');