修改jQuery?
最近開發遇到一個問題:需要把項目所有ajax請求的參數加上一個隨機數(用于清緩存),但是項目有40多個ajax請求,不想手動去修改,于是自己想試著修改jQuery的ajax源碼,最后也達到目的了,不過想問問有沒有更好的方法。(我猜應該是有的。。)
jQuery是v3.1.1
找到ajax函數修改為:
ajax: function( url, options ) { if(url.data != undefined) url.data.random = Math.random(); else url.data = {random:Math.random()};··· (省略號后面是jQuery寫ajax的500多行源碼) }
思路就是這樣。。很簡單粗暴的直接改源碼。
當然我一開始是打算用extend來修改的,比如:
$.extend($, {ajax: function( url, options ) { if(url.data != un<愛尬聊_百科>defined) url.data.random = Math.random(); else url.data = {random:Math.random()};··· (省略號后面是jQuery寫ajax的500多行源碼) } }
這個方法行不通是因為ajax內部的源碼還包括其他的函數,這樣我不確定要怎么復寫(難道要把ajax函數里面的所有其他函數也extend進去?)
所以,我想問有沒有一個方法,可以讓我在$.ajax.prototype上加幾行代碼就實現攜帶隨機參數的做法?
===============編輯:以下是采用了 邊城 大神給出的思路 很方便=========
$.ajax = (function(ajax) {return function(url, data) {url.data != undefined ? url.data.randomnumber = Math.random() : url.data = {randomnumber:Math.random()};return ajax.call($, url, data);};})($.ajax);
把代碼寫在公共組件里面就可以了.
寒若寶寶 2022-07-21 07:31
不過你的想法也是可以實現的,只是要稍麻煩一點(只是寫個思路,沒去調試)
會飛的小裙子 2022-07-21 07:43
一般建議抽象一個全局方法出來。經過包裝之后。最后調用$.ajax.
abdursul#p#zhui 2022-07-21 07:54
一般我比較喜歡定義一個自己的方案,比如 $.myAjax,或者寫在自己的應用類里面如 app.ajax,項目里都用這個。
