专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

My ajaxwrapper tool

Until recently, when I write ajax call, always write like below:

$.ajax({
                type: "post",
                datatype: "json",
                url: "someurl",
                success: function (data) {
                    //some logic
                }
});

and repeat everywhere… Until some day: so much redundant code!

Fournately, the “ajaxwrapper” tool can resolve this problem. ^.^

By using “ajaxwrapper”, the code will be changed like this:

a2d.core.ajax.ajaxwrapper("ajaxDefinationId", { userId: 100 }, function(result){
   //some logic
}).call();

I believe you’v found something missed–> we should define “ajaxDefinationId” first, like below:

a2d.core.ajax.ajaxwrapper.setup.add({ id: "ajaxDefinationId", method: "post", url: "testurl.aspx" });//we may extend here, add much more parameters like headers, etags, cache, etc...

Explain- core code:

a2d.core.ajax.ajaxwrapper = function (id, data, callback) {
    var defaultConfig = {
        id: null,
        data: null,
        callback: null
    };
    var realConfig = $.extend(defaultConfig, { id: id, data: data, callback: callback });
    var setupConfig = a2d.core.ajax.ajaxwrapper.setup.find(realConfig.id);

    var ajaxCall = function () {
        $.ajax({
            url: setupConfig.url,
            type: setupConfig.method,
            async: true,
            cache: false,
            data: realConfig.data,
            dataType: "json",
            success: realConfig.callback,
            error: a2d.core.exception.service.takeoverFunction(function () { throw new kxtx.core.exception("ajax error"); })
        });
    }

    return {
        call: ajaxCall
    };
};

Code is simple. First, it search ajax’s global defination & current definatio, and then invoke jquery’s ajax method.

Let’s look error handler: a2d.core.exception.service.takeoverFunction, this function can add a wrapper on a function. When an error throw in function, takeoverFunction will catch it, and process it. See below:

a2d.core.exception.service.takeoverFunction = function (fn) {
    var newHandler = function () {
        try {
            fn.call(fn, arguments[0],
                                                        arguments[1],
                                                        arguments[2],
                                                        arguments[3],
                                                        arguments[4],
                                                        arguments[5],
                                                        arguments[6],
                                                        arguments[7],
                                                        arguments[8],
                                                        arguments[9],
                                                        arguments[10]);
        }
        catch (ex) {
            if (ex instanceof a2d.core.exception) {
                a2d.core.events.service.publish("a2d.core.exception:occurred", ex);
            }
            else {
                alert("未知exception类型");
            }
        }
    };

    return newHandler;
}

Code is still simple. Core code is “try/catch”–>a2d.core.events.service.publish(“a2d.core.exception:occurred”, ex);

AhHa, finally, we found the error was published by a2d framework. Depend on this mechanism, the concrete impl be decopouled by pub/sub pattern, we can subscribe this event flexible.

The tool has been integrated into A2DFramework.

文章永久链接:https://tech.souyunku.com/38946

未经允许不得转载:搜云库技术团队 » My ajaxwrapper tool

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们