2012-02-25 2 views
1

문제가 있습니다. 익명 함수에 다음 코드가 있습니다.익명 기능을 종료하십시오. jQuery

 ... 
     if (fillActyalizerForm(jQuery(this).attr('account_id'), jQuery(this).attr('currency_id')) == false) { 
      return false; 
     } 
     jQuery("#actyalizer").slideToggle("slow"); 
     ... 

오류가 반환 되더라도 요소는 아래로 슬라이드됩니다.

function fillActyalizerForm(account_id, currency_id) { 
    formValues = {}; 
     jQuery.ajax({ 
      async: false, 
      type: 'POST', 
      url: "..", 
      data: "{'accountId':" + account_id + ",'currencyId':" + currency_id + "}", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       if (data && data.hasOwnProperty("d")) { 
        data = data.d; 
       } 
       if (!data.Error) { 
        formValues = data; 
        delete formValues.Error; 
       } else { 
        alert('<%=Resources.app.Actyalizer_AcLoadFail %>'); 
        return false; 
       } 
      }, 
      error: function (data) { 
       alert('<%=Resources.app.Actyalizer_AcLoadFail %>'); 
       return false; 
      } 
     }); 

경고 메시지가 표시되지만 여전히 elemtn이 아래로 내려갑니다.

+8

반품에 확신 하시겠습니까? – mindandmedia

+0

@mindandmedia가 말한 것을 확장하려면 콘솔의'fillActyalizerForm' 함수에 의해 발생한 에러를 확인하십시오. –

+0

@ mindandmedia, @ Rory McCrossan 하위 함수 반환 false로 만드는 방법? try-catch 시도했는데 실패했습니다. –

답변

1

fillActyalizerForm 함수는 비동기식 .ajax 메서드를 실행 한 다음 반환 값을 지정하지 않고 반환합니다 (기본 반환 값은 false입니다).

    success 기능에 jQuery("#actyalizer").slideToggle("slow"); 이동
  1. :

    나는 당신이 두 가지 선택이 생각합니다.

  2. 동기식 ajax 요청을 수행하십시오.

옵션 1을 권하고 싶습니다. 이 기능은 매개 변수로 함수를 fillActyalizerForm에 전달하거나 실제 코드를 이동하여 수행 할 수 있습니다.

+0

나는 ill Wull이 두 번째 옵션 인 –

+0

@ JakeFisher를 사용한다고 생각한다. 동기식 AJAX 호출을 사용할 때 단점을 인식하고 UI 스레드를 차단한다! 그것을 연구하고 그것이 정말로 원하는 것인지 확인하십시오. –

+0

Fourie 네, 첫 번째 옵션에 대해 옳았습니다. 이것은 더 선호할만한 것이었다. –

관련 문제