gpt4 book ai didi

javascript - 有什么方法可以操作 jQuery 中现有的 preFilters 吗?

转载 作者:行者123 更新时间:2023-11-27 23:17:55 25 4
gpt4 key购买 nike

jQuery.ajaxPrefilter() 函数允许将预过滤器添加到内置过滤器中,但似乎没有办法访问内部 jQuery 预过滤器。在 jQuery 1.11.1 中,我看到第 8568 行声明了一个私有(private) preFilters 对象,但我没有看到返回或操作它的方法。

我已经添加了预过滤器,但一些现有的预过滤器(即 dataType = 'script')正在扰乱它。另外,我希望能够在运行时动态添加/删除/重新排列预过滤器。

这是一个代码笔,说明了这个想法:http://codepen.io/anon/pen/Yqzwqp

当您选中该复选框时,所有 GET 调用都会自动转换为 POST。当您取消选中它时,它们会恢复正常。唯一不遵守这一点的简写方法是 $.getScript()

有什么想法吗?

最佳答案

您可以使用 $.ajaxSetup()beforeSend 选项 .abort().ajaxError() 处理错误

$.ajaxSetup({    
beforeSend: function(jqxhr, settings) {
if (settings.type === "GET" && settings.dataType === "script") {
// abort `$.getScript()`
jqxhr.abort();
// convert `type` to `POST`
settings.type = "POST";
// convert `dataType` to expected response from `POST`
settings.dataType = "json";
settings.cache = false;
// remove query string from , replace `url`
settings.url = "script2.js"; /* settings.url.replace(/\?.*$/, ""); */
console.log("beforeSend", settings);
// use updated `settings` object
$.ajax(settings)
}
},
complete: function(data, textStatus, jqxhr) {
console.log("complete", data)
}
});

$(document).ajaxError(function(event, jqxhr, settings, errorThrown) {
// handle aborted `$.getScript()` requests
console.log("err", event, jqxhr, settings, errorThrown)
});
// `request` should be converted into `$.ajax({type:"POST"})`
var request = $.getScript("script1.js");

plnkr http://plnkr.co/edit/Q9PmTVnO4LoWvvjmIBLs?p=preview

关于javascript - 有什么方法可以操作 jQuery 中现有的 preFilters 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35654303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com