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() {
           ....
         }
});

因为我使用的是 FormDatacsrf 参数没有被附加。是否有适当的方法将通用数据附加到所有类型的 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 }}"?>