문제

나는 여기서 무슨 일이 일어나고 있는지 전혀 모르고 누군가가 도울 수 있기를 바라고 있었는데, 내가 실종 된 것이 쉬운 일이라고 확신합니다.

JavaScript에 jQuery 게시물이있는 기능이 있습니다. 나는 단지 텍스트 인 게시물의 결과를 반환하고 변수에 넣고 싶습니다. 숫자는 게시물에서 올바르게 돌아 오지만 변수에 넣으면 변수는 "정의되지 않은"이라고합니다. 어떤 아이디어?

var total = GetTotalSize();
alert(total);

function GetTotalSize(){
    var i = "";
    $.post("Handlers/GetTotal.ashx", {id : $("#hID").val()}, function(data){
        i = data.toString();
        return i;
    });
}
도움이 되었습니까?

해결책

당신은 그렇게 할 수 없습니다. Ajax의 "A"는 "비동기"를 의미합니다. 당신이 제공하는 콜백 기능 $.post() 이후에 잘 실행됩니다 GetTotalSize() 실행 및 반환.

이를 수용하기 위해 코드를 재구성해야합니다. 나머지 코드가 어떻게 보이는지 모르기 때문에 추천서는 구체적 일 수는 없지만 여기에 가능성이 있습니다.

$.post("Handlers/GetTotal.ashx", {id : $("#hID").val()}, function(data)
{
  doSomethingWithTotalSize( data.toString() );
});

function doSomethingWithTotalSize( totalSize )
{
  // whatever
}

다른 팁

Peter는 절대적으로 옳지 만 $ .ajax 방법이 통과하여 동기식으로 작동하도록 강요 할 수 있습니다. async: false.

문제는 당신이 돌아오고 있다는 것입니다 i 콜백 함수 외부. 기본적으로 돌아올 때 i, 내용은 아직 존재하지 않으며 서버가 데이터를 콜백 함수로 반환 할 때까지 존재하지 않습니다.

이 시도

function GetTotalSize(callback) {    
  $.post("Handlers/GetTotal.ashx", {id : $("#hID").val()}, function(outputData) {
       callback(outputData);
    });
}

function DoSomething(data)
{
   //....
}

GetTotalSize(DoSomething);

나는 이것이 오래된 게시물이라는 것을 알고 있지만, 나를위한 솔루션은 사용하는 것이 었습니다. complete:[delegate] 보다는 success. 이것은 callback 완료되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top