JQuery ajaxSetup - 将全局数据附加到FormData

时间:2017-05-04 07:01:25

标签: javascript jquery ajax form-data

我使用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请求?

2 个答案:

答案 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 }}"?>