簡體   English   中英

修改jquery $ .get函數響應

[英]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 filesget所有場合替換為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM