在我的项目中,我在许多情况下使用了$.get
函数:
$.get(user, function (data) {
// CODE
});
现在,我想将其修改为:
$.get(user, function (data) {
if (validate_data(data)){
// CODE
}
});
但是不可能去项目中的每个javascript文件并修改所有实例。是否可以修改jquery.js
文件以获得相同的结果?
答案 0 :(得分:2)
您可以使用
拉取某些内容$.ajaxComplete(function(data) { ... } )
答案 1 :(得分:1)
据我所知,您可以在成功之前处理数据并使用throw来停止脚本。不是最好的解决方案,但应该有效。
jQuery.ajaxSettings.dataFilter = function(response, type){
if (!validate_data(response)){
throw "Stop!";
}
return response;
}
答案 2 :(得分:1)
我认为最简单的方法是扩展jQuery(未经测试):
jQuery.fn.extend({
get_validated: function(url, callback) {
return $.get(url, function(data) {
if(validateData(data)) {
callback(data);
}
}
}
});
然后在IDE中使用get
替换get_validated
replace in files
的每个场合。
答案 3 :(得分:1)
您可以使用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 );
}
});
这个技巧的唯一限制是你必须在你的电话中有一些东西,以便你可以确定它是你想要验证响应的电话