最近在開發一個網站的時候,遇到了一個十分奇怪的問題。就是在使用jQuery的ajax請求的時候,使用了beforesend參數,但是卻一直無效。
以下是我使用的代碼:
$.ajax({ url: 'test.php', type: 'GET', beforeSend: function() { console.log('before send'); }, success: function(response) { console.log(response); } });
在控制臺中,只有"before send"沒有打印出來,判斷beforesend函數并沒有執行。
經過多次的嘗試,我發現了問題所在:我在全局設置了ajax的缺省參數,其中beforeSend設置為了一個空函數:
$.ajaxSetup({ beforeSend: function() {} });
這導致了我后續的ajax請求都沒有執行beforeSend函數。
解決這個問題的方法很簡單,只需要在每次請求中重新設置beforeSend參數即可:
$.ajax({ url: 'test.php', type: 'GET', beforeSend: function() { console.log('before send'); }, success: function(response) { console.log(response); } });
雖然解決了這個問題,但是我還是對jQuery的beforesend參數產生了疑惑。感覺在全局設置了缺省參數之后,每次請求應該是可以覆蓋掉缺省參數的。如果有大佬知道其中的原因,歡迎在評論區留言,一起交流一下。