2010-04-21 4 views
2
$.ajax({ 
     url: "/cgi-bin/stats.exe", 
     method: "post", 
     async: false, 
     data: { refresh: "a41" } 
    }); 

동기식으로 ajax 사용 - "async : false".POST를 차단하는 jQuery 동기 브라우저에서 커서를 어떻게 변경합니까?

활성 요청 중에 브라우저를 차단하는 동안 커서를 모래 시계로 변경하거나 대기 .gif를 표시하는 가장 효율적인 방법은 무엇입니까?

아마도이 기능을 입력 할 때 커서를 설정 한 다음 success or complete function?

모든 조언을 주시면 감사하겠습니다.

감사합니다.

+0

'async : false' 줄을 제거하고 만우리가 제안한대로하십시오. –

답변

1

jQuery blockUI plug-in을 사용하는 것이 좋습니다. 그것은 커서를 변경하고 사용자가 기다리는 동안 원하는 메시지 나 아이콘 (http://ajaxload.info/)을 보여줍니다. 이 그것을 사용하는 방법에 대한 웹 사이트에서 정보를 많이하지만 가장 단순한 형태 :

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI); 

자동으로 대기 커서를 표시하고 Ajax 호출이 완료 될 때까지 사용자의 활동을 방지 할 수있다.

+0

어쨌든 "동기식"아약스 호출 중에는이 작업이 도움이되지 않습니다. – VoidKing

2

다른 모든 것을 완전히 차단하므로 요청을 동기로 만들지 마십시오. 대신 비동기 요청을 사용할 수 있지만 UI를 "차단"하여 동기식으로 보이게 만듭니다. 나는 이것을 위해 jQuery.blockUI()을 사용합니다.

+0

나는 이것도 아주 멋지다. – Cipi

+0

아주 좋습니다. 그러나,이 특정 경우에 대한 요청 후에도 페이지가로드되지 않도록해야하지만 플러그 인으로 계속 수행 할 수 있어야합니다. –

+0

"페이지가로드되지 않도록 하시겠습니까?" 브라우저가 현재 페이지에 있는지 확인하십시오. 그런 종류의 일은 당신의 통제 밖입니다. 사용자가 특정 페이지에 계속 머물러서는 안됩니다. 브라우저를 죽이면 어떻게됩니까? –

3

나는이 테스트를하지 않은,하지만 난 그렇게 같이 할 것이라고 생각 :

$('html, body').css('cursor', 'wait'); 

$.ajax({ 
    url: "/cgi-bin/stats.exe", 
    method: "post", 
    async: false, 
    data: { refresh: "a41" }, 
    success: function() { 
    $('html, body').css('cursor', 'auto'); 
    // the rest of your processing here 
    }, 
    error: function() { 
    $('html, body').css('cursor', 'auto'); 
    } 
}); 

당 @ 패트릭의 제안

이뿐만 아니라 오류에 다시 변경.

+3

'error :'콜백에서 다시 변경해야 할 것입니다. – user113716

+1

아약스 게시 전에 넣은 기능처럼 보이지만 게시물 이후에도 계속 발생합니다 ..? 즉 커서를 이전에 변경하고 게시물 이후에 변경합니다. (블록 스크린과 같은 문제) –

+1

@Hooray,'success :'와'error :'대신'complete :'에서 커서를 변경하여 코드를 복사하는 것을 피할 수있다. –

관련 문제