jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – 如何优化(最小化)jQuery AJAX调用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有来自我的代码的不同功能的50多个AJAX调用.所有这调用有类似的结构,具有不同的data / url / callBACk参数:

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”变量传递给该函数,但它似乎不是一个优雅的解决方案.

有什么建议如何以优雅的方式?

谢谢

最佳答案
调用函数时将完成的回调函数作为参数传递:

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

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

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

function ajaxCall(url,data) {
    return $.post(url,"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调用全部内容,希望文章能够帮你解决javascript – 如何优化(最小化)jQuery AJAX调用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。