javascript - 如何在 ajax 调用后拦截数据,与 jquery.ajaxPreFilter 对话

标签 javascript jquery

我想在执行ajax成功回调之前拦截并修改来自服务器的数据

我有这个代码:

    jquery.ajaxPrefilter(function (options, originalOptions, jqXHR) {
        // Modify options, control originalOptions, store jqXHR, etc
    });

并且想要等效的:

    jquery.ajaxPostfilter(function (dataComingFromServer) {

        dataComingFromServer.applyMyModifications();
    });

ajaxPostfilter 虽然不存在 - 是否有另一种方法可以在服务器响应到达事件处理程序之前拦截它:

这个问题与这个问题相关——但没有得到回答: How can I intercept ajax responses in jQuery before the event handler?

最佳答案

如果你想在特定的回调之前使用一个标准化的函数来修改你的数据,你可以使用这样的模式:

// Boilerplate to modify your data
function preprocess(data){
    data.foo = "bar";
    return data;
}

// Your specific handlers
function logdata(data){
    console.log(data);
}
function writedata(data){
    document.write(data);
}

// AJAX requests
$('#foo').load('url1', function(data) {
    logdata(preprocess(data));
});
$('#bar').load('url2', function(data) {
    writedata(preprocess(data));
});

当然,这个可以bak成一个方法,把传统的.ajax包裹起来,用起来更方便。

请注意,KevinB 指出的 dataFilter 选项具有类似的目的,但仅限于 .ajax 方法。如果你想为 AJAX 请求设置一个全局过滤器,你可以使用:

$.ajaxSetup({
    dataFilter: preprocess
});

关于javascript - 如何在 ajax 调用后拦截数据,与 jquery.ajaxPreFilter 对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164696/

相关文章:

javascript - jquery 淡出,淡入,等待,淡入再次损坏

javascript - 提交前验证 "select"下拉列表

javascript - 如何将字符串转换为日期时间(格式为 D/MM/YYYY HH :MM:SS PM)

javascript - 用 jQuery 包装 div

javascript - jquery ajax 中的动态内容加载

javascript - JS 中的 XML 字符串操作?

javascript - 以 edit 结尾的目标路线?

javascript - 仅使用 LMB 启动 onclick/onmousedown

javascript - 如何在使用javascript单击一次后禁用 Bootstrap 按钮

javascript - Typescript 定义困惑