2013-05-20 1 views
3

이 코드는 내가 작성한 코드가 아니며, 이미 구현 된 시스템에서 플러그인을 사용하여 일부 UI를 변경하고 있습니다.

Ajax 호출이 실행될 때 특정 요소 위에 로딩 아이콘을 표시하기 위해 blockUI (예, 플러그인으로 플러그인을 작성해야 함)을 사용하는 플러그인을 작성하고 있습니다. success() 이벤트가 필요한 응답을받지 못하면 alert()입니다.

이의 결과는 내가하고 싶은 것이 아니다 fadeOut()alert 화재를 호출 내 로딩 아이콘입니다. 내가 짓고 있어요 함수를 호출 할 때

, 나는 다음과 같이 $.post() 내가 필요한 설정 및 옵션 완료 패스 :

$.fn.startLoading({    
    element: $("div"), 
    ajax: $.post('some.url', 
    { 
     //Ajax settings... 
    }, function (response) { //This is the success function, right? 
      if (good) { 
       //stuff 
      } 
      else 
       alert("Bad!"); //This happens BEFORE fadeOut() 
     } 
    }, 'text') 
    .error(function (msg) { 
     alert('Worse error!'); 
    }) 
}); 

내 플러그인의 기능을 하나 개의 options 매개 변수로이 모든 것을에서 소요 과 같이 :

:

$.fn.startLoading = function (options) { ...

나는 다음과 같이 $.post() 전화에 액세스

이것은 내가 갇혀있는 곳입니다. success 이벤트가 시작되기 전에 fadeOut()이 발생하는지 확인해야합니다. 내 플러그인에서 만든 변수 ajax을 사용하여 어떻게해야합니까?

+0

여기서 구문 오류 :'ajax : $ .post ('some.url'), {'아마도'를 제거해야합니다. ')' –

+0

그냥 고마워. 지금 업데이트 중입니다. – Kehlan

+0

또한,'jqXHR.error'는 가치가 떨어 지므로 대신 .fail을 사용해야합니다. –

답변

1

쉬운 방법 중 하나 ajaxComplete, ajaxSuccess 함께 등 http://api.jquery.com/category/ajax/

사람들은 ... jQuery를 통해 전송되는 모든 아약스 요청을 잡아 글로벌 아약스 처리기 그래서 당신이 거기에 핸들러를 설정 등 자신의 콜백 요소를 화이트리스트 수 있도록 당신의 관심사가 아닌 것을 무시하십시오.

내 테스트에서 이러한 글로벌 처리기는 특정 ajax 호출의 처리기를 시작하기 전에 실행됩니다.