如果在类中定义$ .ajax方法,如何使用ajaxStart?

时间:2012-06-01 11:40:10

标签: ajax jquery

我在js文件中的一个类中创建了ajax方法。随附以下参考资料

var ajaxcall =
{
    SitePath: '',
    data: '',
    url: '',
    callbackfunction: '',
    fileElementId: '',
    AjaxRequest: false,
    callback: true,
    async: false,
    folder: '',
    filename: '',
    Call: function () {
        if (ajaxcall.AjaxRequest == true) {
            alert(ajaxcall.AjaxRequest);
            return;
        }
        else {
            try {
                ajaxcall.AjaxRequest == true;
                alert('b');
                $.ajax({
                    type: "POST",
                    url: ajaxcall.url,
                    data: ajaxcall.data,
                    contentType: "application/json; Characterset=utf-8",
                    dataType: "json",
                    async: false,
                    success: function (data) {
                        if (ajaxcall.callback == true) {
                            ajaxcall.callbackfunction(data);
                        }
                    },
                    error: function (request, status, error) {
                        //alert("Exception Handling :  \n" + request.responseText);
                        alert('Unable to process the request at this moment! Please try again later.');
                    },
                    complete: function () {
                        ajaxcall.AjaxRequest = false;
                    }
                });
            }
            catch (e) {
                ajaxcall.AjaxRequest == false;
                // alert("Error Catch : " + e.Description + '\n' + 'Message: ' + e.Message);
            }
        }
    },
    AjaxFileUpload: function () {
        $.ajaxFileUpload({
            type: "POST",
            url: "../GenericHandlers/FileUploader.ashx?path=" + ajaxcall.folder,
            dataType: 'json',
            async: false,
            secureuri: false,
            fileElementClass: ajaxcall.fileElementClass,
            success: function (data) {
                var data = data.toString();
                ajaxcall.filename = data.substring(6, data.length - 7);
                alert(ajaxcall.filename);
                return true;
            }
        });
    }
};

现在我想在ajax调用开始时显示div并在完成后隐藏。 所以我已经使用了

$(document).ready(function(
    $('#Loading').ajaxStart(function () {
         alert('a');
         $('#Loading').show();
    }).ajaxStop(function () {
         $('#Loading').hide();
    });
});

但是当我调用ajax方法(在类中定义)时,控制首先进入ajax方法,然后进入ajaxStart。

我不知道为什么会这样。请帮忙。

2 个答案:

答案 0 :(得分:1)

使用建议的全局:

$.ajaxStart(function() {
    $("#Loading").show();
});
$.ajaxComplete(function() {
    $("#Loading").hide();
});

尝试以这种方式附加到您的加载ID元素:

$("#Loading").ajaxStart(function() {
    $(this).show();
});
$("#Loading").ajaxComplete(function() {
    $(this).hide();
});

答案 1 :(得分:0)

AjaxStart在http请求启动时调用,而不是在执行ajax方法时调用。