0

jsファイルの1つのクラスに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();
});

この方法でLoadingid要素に添付して試してください。

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

AjaxStartは、ajaxメソッドの実行時ではなく、httpリクエストの開始時に呼び出されます。

于 2012-06-01T11:44:45.313 に答える