确定要提交的 ajax 数据的类型

Identify type of ajax data to be submitted

我有一个 JQuery 代码,它在所有 ajax 请求中添加额外的 POST 参数以进行 csrf 验证:

$(document).ajaxSend(function (e, xhr, opt) {
    if (opt.type == "POST") {
        csrf_token = get_cookie("x-csrf-cookie");
        opt.data.append('x-csrf-token', csrf_token);
    }
});

问题:我想知道如何识别提交数据的类型。目前我正在提交一个 FormData 对象,但我有提交文本类型的新函数,所以我需要区分数据是 FormData 对象还是文本。

提前致谢!

您可以通过检查 data 选项来执行此操作,并查看传入的内容

$(document).ajaxSend(function(e, xhr, opt) {
  if (opt.type == "POST") {

    if (opt.data instanceof FormData) {

      // formData
      var csrf_token = get_cookie("x-csrf-cookie");
      opt.data.append('x-csrf-token', csrf_token);

    } else if (typeof opt.data === 'object') {

      // some other object

    } else if (typeof opt.data === 'string') {

      // string passed as data

    } else {

      // anything else

    }
  }
});

最后一个参数是因为您收集了调用 $.ajax

时传递的所有选项