0

CrossDomain の要件を満たすために、jQuery の .load() 関数をオーバーロードしました。

(function ($) { 
    var _load = $.fn.load; 
    $.fn.load = function(url, params, callback) { 
        if (url.match('^http')) { 
            $(this).load("read_page.php?p="+url);
            return this;
        }
        else{
            return _load.apply(this, arguments); 
        }
    }
})(jQuery);

「read_page.php」はクロスドメインからページを取得するために PHP curl を呼び出します。

上記のオーバーライドされた関数を呼び出すコードの部分は次のとおりです。

$(trg).load(user_folder+shw+qs, function(){
                        showErr("Updation Successfull", trg);
                        $(".divErr").css("border-color","#4F8A10");
                        $(".divErr").css("background","url(images/img_suc.png) no-repeat 10px 50%, left;");
                        $(".divErr").css("background-color","#DFF2BF");
                    }).html(vLoading);

私のコードがthisの値を返すので、 .html(vLoading)部分はうまくいっています。

私のコードにはコールバックを処理する部分がないため、function(){...}部分が機能していません

カスタム オーバーライド関数でコールバックを処理するのに助けが必要です。

4

1 に答える 1

0

このバージョンを試してください:

(function ($) { 
    var _load = $.fn.load; 
    $.fn.load = function(url, params, callback) { 
        if ( url.match('^http') ) {
            var params = params || {},
                callback = callback || function () {};
            _load.call(this, "read_page.php?p="+url, params, callback );
            return this;
        }
        else {
            return _load.apply(this, arguments);
        }
    }
})(jQuery);
于 2012-06-27T08:16:21.297 に答える