0

我在我的 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。

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

4

2 回答 2

1

对这些使用推荐的全局:

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

尝试以这种方式附加到您的 Loading id 元素:

$("#Loading").ajaxStart(function() {
    $(this).show();
});
$("#Loading").ajaxComplete(function() {
    $(this).hide();
});
于 2012-06-01T13:05:56.663 回答
0

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

于 2012-06-01T11:44:45.313 回答