JQuery ajaxSetup - 将全局数据附加到 FormData
JQuery ajaxSetup - appending global data to FormData
我正在使用 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 请求?
您可以通过使用 $.extend and $.ajaxPrefilter 将默认数据与您提供的数据合并来解决此问题:
UPDATED:
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
if (originalOptions.data instanceof FormData) {
originalOptions.data.append(csrfParamName, csrfParamValue);
}
});
是的,它不起作用,因为您使用的是 FormData。
将 csrfValue
添加到您的 ajax 数据或
在您的表单中添加一个隐藏字段
<input type="hidden" value="{{ csrfValue }}"?>
我正在使用 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 请求?
您可以通过使用 $.extend and $.ajaxPrefilter 将默认数据与您提供的数据合并来解决此问题:
UPDATED:
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
if (originalOptions.data instanceof FormData) {
originalOptions.data.append(csrfParamName, csrfParamValue);
}
});
是的,它不起作用,因为您使用的是 FormData。
将 csrfValue
添加到您的 ajax 数据或
在您的表单中添加一个隐藏字段
<input type="hidden" value="{{ csrfValue }}"?>