programing

Jquery agaxStart가 트리거되지 않음

oldcodes 2023. 8. 27. 09:53
반응형

Jquery agaxStart가 트리거되지 않음

이 코드

$("#loading").ajaxStart(function() {
        alert("start");
        $(this).show();
    });

내가 보기에

<div style="text-align:center;"><img id="loading" src="../images/common/loading.gif" alt="" /></div>

다음은 전체 Ajax 요청입니다.

$.ajax({
        type: "POST",       

        url: "http://localhost/WebServices/Service.asmx/GetResults",

        data: jsonText,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {

            var results = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
            PopulateTree(results);
        },

        error: function(xhr, status, error) {
            var msg = JSON.parse(xhr.responseText);
            alert(msg.Message);


        }
    });

$("#loading").ajaxStart(function() {
        alert("start");
        $(this).show();
    });

    $("#loading").ajaxStop(function() {
        alert("stop");
        $(this).hide();
        $("#st-tree-container").show();

    });

GIF가 회전하는 것으로 표시되더라도 경고 "시작"을 실행하지 않습니다.예상대로 AjaxStop이 트리거됩니다.왜 그런지 아십니까?

Ajax 요청이 이미 진행되고 있을 때(호출되었을 때가 지나기 까지) 에 대한 핸들러가 등록되지 않기 때문에 트리거되지 않습니다.는 이후에도 등록되지만 요청이 완료되기 전에 다시 실행되도록 연결됩니다.

이 문제를 해결하려면 첫 번째 통화 전에 이 문제를 해결하십시오.

$("#loading").ajaxStart(function() {
  $(this).show();
}).ajaxStop(function() {
  $(this).hide();
  $("#st-tree-container").show();
});


업데이트: jQuery 1.9부터는 AJAX 이벤트를 문서에만 첨부해야 합니다. http://jquery.com/upgrade-guide/1.9/ #http://filename-http://filename-http://-

$(document).ajaxStart(function() {
  $("#loading").show();
});

$(document).ajaxStop(function() {
  $("#loading").hide();
  $("#st-tree-container").show();
});

jQuery 1.9부터는 AJAX 이벤트를 문서에만 첨부해야 합니다.

마이그레이션 가이드를 참조하십시오.http://jquery.com/upgrade-guide/1.9/ #http://filename-http://filename-http://-

jQuery 1.9 기준으로 글로벌 AJAX 이벤트(ajaxStart, agaxStop, agaxSend, agaxComplete, agaxError 및 agaxSuccess)는 문서 요소에서만 트리거됩니다.문서에서 AJAX 이벤트를 청취하도록 프로그램을 변경합니다.예를 들어 코드가 현재 다음과 같이 표시됩니다.

$("#status").ajaxStart(function() { 
   $(this).text("Ajax started"); 
});

다음으로 변경:

$(document).ajaxStart(function() {
   $("#status").text("Ajax started");
});

이것이 당신의 문제를 해결할 수 있을지는 모르겠지만, 일반적으로 저는 사용합니다.debug.info('your message')대신 Firebug 콘솔과 함께 사용할 수 있습니다.alert()경고는 사용자가 스크립트를 해제할 때까지 스크립트 처리를 중단하는 반면 debug.info 은 상당히 방해가 되지 않습니다.

여기에서 debug.info 구현을 다운로드할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2275342/jquery-ajaxstart-doesnt-get-triggered

반응형