我有这样的代码:
$.get( "ajax/test.html", function( data ) {
$( ".result" ).html( data );
});
我想使用一些全局方法更新ajax返回的数据
$.get
函数中。$.get
应该收到更新的代码,而不是原始代码HTML
数据更新数据,而不是json或任何其他类型的数据我知道有一个全局函数可以处理ajax调用的成功:
$(document).ajaxSuccess(function() {
$( ".log" ).text( "Triggered ajaxSuccess handler." );
});
问题是,这个函数只接收数据,我不知道如何通过这个函数更新data
。
有什么想法吗?
答案 0 :(得分:2)
我猜您可以使用ajaxSetup功能并在此设置过滤器:
$.ajaxSetup({
converters: {
'text html': function (data) {
console.log('haha! I\'ve stolen your data!');
console.log(data.substring(0,100));
return 'no data :)';
}
}
});
$.get('http://fiddle.jshell.net')
.success(function(data) {
console.log('I got:' + data);
});
在此DEMO中,只会更改html数据。
修改强>:
我使用了text html
过滤器(包含2个标识符:from
类型和to
类型),因为它在jQuery docs中提到过:
{“* text”:window.String,“text html”:true,“text json”:jQuery.parseJSON,“text xml”:jQuery.parseXML}
我认为它定义了从text
到html
的转换。通常没有转换,但您可以添加自己的转换,可以根据需要修改数据。
<强> EDIT2 强>
如果您愿意,可以使用以下“durty hack”:
var originalFunc = $.get;
$.get = function() {
return originalFunc.apply(window, arguments)
.then(function(data) {
return 'no data again :)';
});
};
又一个DEMO。
或者,dataFilter
如下:
$.ajaxSetup({
dataFilter: function(data) {
//console.log(data);
return 'sorry, guys, I lost data again';
}
});
$.get('http://fiddle.jshell.net')
.success(function(data) {
console.log('I got:' + data);
});
下一页Demo。