gpt4 book ai didi

javascript - 如何优化(最小化)jQuery AJAX 调用

转载 作者:搜寻专家 更新时间:2023-11-01 04:18:01 25 4
gpt4 key购买 nike

我的代码的不同功能有超过 50 个 AJAX 调用。所有这些调用都具有相似的结构,但数据/url/回调参数不同:

var jqXHR = $.post('/dba/port.php', {
mode: "del_wallfunds",
pdata: cdata,
wname: wName
},
function (data) {}, "json")
.done(function (data) {
var msg = data.msg;
if (msg.indexOf("Error") == -1) {
alertify.success(msg);
delSelected(selGroup);
} else {
alertify.error(msg);
}
})
.fail(function () {
alertify.error("Error .....");
});

我正在考虑如何编写一个函数来返回该 var jqXHR 以最小化代码的总大小。传递所有静态变量(如 URL、错误字符串等)不是问题。但问题是“.done”上的所有回调函数都不同,我不知道如何传递这些回调函数作为变量。

一种方法是在 .done 上调用单个“通用”函数并将“switch”变量传递给该函数,但这似乎不是一个优雅的解决方案。

有什么建议可以用一些优雅的方式吗?

谢谢

最佳答案

在调用您的函数时将done 回调函数作为参数传递:

function ajaxCall(url, data, doneCallback) {
return $.post(url, data, doneCallback, "json").fail(...);
// or
return $.post(url, data, function() {}, "json").done(doneCallback).fail(...);
}

var jqXhr = ajaxCall('yoururl.php', {key: 'value'}, function(data) {
// do something
});

或者从函数返回 jqXhr 对象,然后分配 done 回调:

function ajaxCall(url, data) {
return $.post(url, data, function() {}, "json").fail(...);
}

var jqXhr = ajaxCall('yoururl.php', {key: 'value'});
jqXhr.done(function(data) {
// do something
});

或者切换到使用 jQuery.ajax(),并将整个选项对象传递到:

function ajaxCall(options) {
return $.ajax(options).fail(...);
}

var jqXhr = ajaxCall({
url: 'yoururl.php',
data: {key: 'value'},
dataType: 'json'
});
jqXhr.done(function(data) {
// do something
});

关于javascript - 如何优化(最小化)jQuery AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19536337/

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