我使用ajaxSetup
函数在所有jquery ajax请求中传递一个全局参数,如下所示
$.ajaxSetup({
data: {
csrf: csrfValue
}
});
这适用于所有请求,除非我执行ajax文件上传
var formData = new FormData();
formData.append('attachedFile', file);
$.ajax({
url: '/fileUpload',
data: formData,
success: function() {
....
}
});
由于我使用的是FormData
,因此csrf
参数不会被追加。是否有适当的方法将公共数据附加到所有类型的ajax请求?
答案 0 :(得分:0)
您可以使用$.extend和$.ajaxPrefilter将默认数据与您提供的数据合并来解决此问题:
UPDATED:
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
if (originalOptions.data instanceof FormData) {
originalOptions.data.append(csrfParamName, csrfParamValue);
}
});
答案 1 :(得分:0)
是的,因为您正在使用FormData,所以它不起作用。
将csrfValue
添加到您的ajax数据或
在表单中添加隐藏字段
<input type="hidden" value="{{ csrfValue }}"?>