2017-09-01 77 views
1

我有一个JQuery的代码,对CSRF验证所有Ajax请求增加了额外的POST参数:确定提交AJAX数据的类型

$(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对象还是文本。

在此先感谢!

回答

2

你可以通过检查data选项调用$.ajax

时做到这一点,看看在

$(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 

    } 
    } 
}); 

最后一个参数传递的是你收集通过了所有选项