[英]Modify jquery $.get function response
我在項目中的很多情況下都使用$.get
函數:
$.get(user, function (data) {
// CODE
});
現在,我想將其修改為:
$.get(user, function (data) {
if (validate_data(data)){
// CODE
}
});
但無法轉到項目中的每個javascript文件並修改所有實例。 是否可以修改jquery.js
文件以獲得相同的結果?
您可能可以通過使用來拉東西
$.ajaxComplete(function(data) { ... } )
據我所知,您可以在成功之前處理數據,並使用throw來停止腳本。 不是最好的解決方案,但應該可以。
jQuery.ajaxSettings.dataFilter = function(response, type){
if (!validate_data(response)){
throw "Stop!";
}
return response;
}
我認為最簡單的方法是擴展jQuery(未經測試):
jQuery.fn.extend({
get_validated: function(url, callback) {
return $.get(url, function(data) {
if(validateData(data)) {
callback(data);
}
}
}
});
然后在您的IDE中使用命令replace in files
將get
所有場合替換為get_validated
。
您可以使用ajaxComplete將回調函數附加到ajax請求,如下所示
$( document ).ajaxComplete(function( event, xhr, settings ) {
if ( settings.url === "MY GET URL" ) { //IF URL matches the one that you need
$( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
xhr.responseText );
}
});
此技巧的唯一局限性在於您必須在呼叫中包含某些內容,以便可以識別出您想要驗證響應的呼叫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.