Как передать this в качестве контекста для вызова $ .ajax - PullRequest
0 голосов
/ 19 марта 2012

Я сократил этот пример до минимального кода.Я фокусируюсь на ключевом слове "this".

Вот как я называю свой плагин Ajax:

settings.context = this;
myXHR = $(this).myAjax('myComponent.cfc',settings);

Что я хотел бы сделать, это использовать $ (this) для контекстатак что вызывающей подпрограмме не нужно устанавливать settings.context = this;

Вот что у меня получилось, но я знаю, что делаю это неправильно:

!function($, window, document, undefined) {
    $.fn.myAjax.myOptions = {
        type: 'POST',
        dataType: 'json'
    }
    $.fn.myAjax = function(myURL, mySettings) {
        var local = {};
        local.settings = $.extend({}, $.fn.myOptions, mySettings);
        local.settings.context = this;
        local.XHR = $.ajax(myURL,local.settings)
        return local.XHR;
    };
}(jQuery, window, document);

1 Ответ

0 голосов
/ 24 марта 2012
!function($, window, undefined) {
    var document = window.document;
    $('#msg').ajaxStart(function() {
      $(this).empty().removeClass('alert alert-info');
    });
    var Variables = {};
    Variables.settings = {
        type: 'post',
        dataType: 'json',
        async:false
    };
    $.fn.myAjax = function(myURL, mySettings) {
        var local = {};

        mySettings = $.extend({}, Variables.settings, {context:this[0]}, mySettings);
        local.$xhr = $.ajax(myURL,mySettings); // myURL += '?returnFormat=json&queryFormat=column'
        local.$xhr.done(function(result) {
            if (result.MSG) {
                $('#msg').html(result.MSG).addClass('alert alert-error');
            }
        });
        local.$xhr.fail(function(jqXHR, textStatus, errorThrown) {
            $('#msg').html(textStatus + ': ' + errorThrown).addClass('alert alert-error');
        });
        return local.$xhr; // return this.each()
    };
}(jQuery, window);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...