zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    SQL学习
    FOR XML PATH
    IOS学习网址
    weak nonatomic strong等介绍(ios)
    UVALive3045 POJ2000 ZOJ2345 Gold Coins
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA10905 Children's Game
  • 原文地址:https://www.cnblogs.com/aarond/p/ajax.html
Copyright © 2011-2022 走看看