2010-05-11 11 views
2

jQuery를 통해 AJAX 호출을 발행하는 함수가 있습니다. 내가 지금처럼이를 호출하는 경우,Javascript AJAX 함수가 true/false 대신 undefined를 반환합니다.

complete: function(XMLHttpRequest, textStatus) 
{ 
    if(textStatus == "success") 
    { 
     return(true); 
    } 
    else 
    { 
     return(false); 
    } 
} 

을하지만 :

if(callajax()) 
{ 
    // Do something 
} 
else 
{ 
    // Something else 
} 

을 첫 번째가 호출되지 않습니다되어 complete 섹션에서는 말한다 기능을 가지고있다.

은 내가 진정한 얻을 complete 기능에 alert(textStatus)을 넣으면,하지만 기능은 undefined를 반환하지 전에.

callajax() 메서드에 콜백 함수를 전달할 수 있습니까? 마찬가지로 :

callajax(function(){// success}, function(){// error}, function(){// complete});

+0

'callajax()'함수를 보여줄 수 있습니까? 당신이 요구하는 것은 이미 여러분이하고있는 방식이어야합니다. –

+0

@Pekka : 표준'$ .ajax()'호출입니다. 특별한 것은 없습니다. 단순히 다양한 애플리케이션에 배포 할 때 수정하지 않아도됩니다. –

답변

7

complete콜백 기능입니다. Ajax 객체에 의해 호출됩니다 - 비동기 적으로! - 작업이 완료되면 콜백의 결과를 잡아낼 방법이 없으며, Ajax 객체 만이 콜백 결과를 얻을 수 있습니다.

callajax() 기능 - 해당 기능이 표시되지 않지만 단순히 Ajax 호출을한다고 가정합니다. 호출 결과 (응답 헤더 및 본문)를 반환 할 수 없습니다. 호출이 아직 완료되지 않았을 때 callajax() 기능을 종료합니다.

업데이트 : 그것은 동기 AJAX 호출하는 것도도 가능하다. 이것을 지적 해 주신 @Andris에게 감사드립니다. jQuery에서 async 옵션을 false : 문서 here으로 설정해야합니다. 그러나, 심지어 내가 볼 수있는 표준 콜백 함수를 사용하므로 false 또는 true을 반환하는 원하는 방법은 여전히 ​​작동하지 않을 수 있습니다.

+0

젠장 ... 그럼 그게 다야. 실패/성공/완료되면 추가 인수 (예 : 콜백)를 제공 할 수 있습니까? –

+0

당신이 할 수있는 일은 함수 안에 "무언가를하십시오"와 "뭔가 다른 것"을 넣고 완전한 콜백 함수 내에서 호출하는 것입니다. 이것이 귀하의 경우에 도움이 될지 확실하지 않은 것 같습니다. – enricog

+0

업데이트를보고 올바른 방향에 있는지 알려주세요. 'callajax()'함수를 모듈화하여 내부의'success','error','complete' 함수를 재 작성할 필요없이 여러 사이트/설정에 사용할 수있게하려고합니다. –

관련 문제