gpt4 book ai didi

javascript - 在每次 ajax 成功回调之前执行函数

转载 作者:行者123 更新时间:2023-11-29 14:47:53 24 4
gpt4 key购买 nike

我有一个网站,其中我依赖大量自定义 API 调用。我的 API 总是返回一个 XML。

目前,在我调用的每个 $.get 或 $.post 的开头,我都有这个片段:

var root = $($.parseXML(data)).find("Response");

if (root.children("Type").text() == "Error") {
toastr.error(root.children("Content").text(), "Error " + root.children("ReturnCode").text());
return;
}

但是,我觉得这段代码在我的一个页面上是多余的,它被使用了 15 次。

我尝试使用 $(document).ajaxSuccess() 但 event.stopPropagation 在这里似乎不起作用

有没有办法“拦截”每个 ajax 调用响应,做一些事情并可能阻止调用其他已定义的成功函数?

最佳答案

我假设你的代码中很多地方都有这样的东西

$.ajax({
method: "GET",
url: "someurl.html",
dataType: "xml",
success : function() {
var root = $($.parseXML(data)).find("Response");
if (root.children("Type").text() == "Error") {
toastr.error(root.children("Content").text(), "Error " + root.children("ReturnCode").text());
return;
}
// ...
},
error : function(qXHR, textStatus, errorThrown){
toastr.error(errorThrown, "Error " + qXHR.status);
}
});

您可以创建一个可以重复使用的通用自定义 ajax 函数

function baseAjaxCall(option, sCb) {    
var ajaxOptions = {
method: option.method || "GET",
url: option.url,
dataType: option.dataType || "xml",
success : function(data) {
var root = $($.parseXML(data)).find("Response");
if (root.children("Type").text() == "Error") {
toastr.error(root.children("Content").text(), "Error " + root.children("ReturnCode").text());
return;
}
else {
sCb(root);
}
},
error : function(qXHR, textStatus, errorThrown){
toastr.error(errorThrown, "Error " + qXHR.status);
}
};
//you can check for optional settings
if(option.contentType !== undefined){
ajaxOptions.contentType = option.contentType;
}

$.ajax(ajaxOptions);
}

您可以在代码的任何地方重新使用 baseAjaxCall 函数

baseAjaxCall({ url: "someurl.html" }, function(root){
// no need to chek for errors here!
});

希望对您有所帮助!

关于javascript - 在每次 ajax 成功回调之前执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30299998/

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