2017-09-01 80 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 

    } 
    } 
}); 

最後一個參數傳遞的是你收集通過了所有選項