2012-03-22 3 views
0

안녕하세요 jQuery 콜백 함수가 작동하지 않습니다.Jquery 포스트 콜백이 작동하지 않습니다.

Competitor = { 
    addCompetitorForSave: function($data) { 

      $.post('/competition/add', $data , function($json) { 

      }, 'json'); 

      return $json; // I need to return json data . 
     } 
} 

다음에해야 할 일.

var data = $('someForm').serialize(); 
var $json = Competition.addCompetitorForSave(data); 

고마워요.

+0

json을 반환해야합니다. – Vahan

+0

결과를 기다리기 전에 결과를 기다려야합니다. –

+0

그건 잘 풀리지 않을거야. 당신은 당신의 디자인을 재고 할 필요가있다. – Supr

답변

3

하지만 동 기적으로 alert 실행됩니다. 따라서 qa 값이 아직 설정되지 않았습니다. 여기에 값을 반환하는 대신 addCompetitorForSave에 추가 콜백을 전달해야합니다.

addCompetitorForSave: function($data, callback) { 
    var qa = 0; 
    $.post('/competition/add', $data , function($json) { 
    callback($json); 
    }, 'json'); 
} 

var obj = ...; 
obj.addCompetitorForSave(theData, function(qa) { 
    alert(qa); 
}); 
+0

고마워 이것이 완벽하게 작동한다. – Vahan

3

게시물이 완료되기 전에 경고가 호출됩니다. 콜백 안에 경고를 두십시오.

+1

addCompetitorForSave가 반환되기 전에 콜백이 호출되지 않기 때문에 qa를 반환하는 것은 의미가 없다. – tinyd

+0

나는 단지 문제를 이해하기 위해 올바른 방향으로 조금 움직였다.) – Supr

+0

절대적으로 - OP에 조금 더 가볍게 추가하고 있었다. – tinyd

0

시도해보십시오 post 비동기 완료

addCompetitorForSave: function($data) { 

     var qa = 0; 


     $.post('/competition/add', $data , function($json) { 
      qa = $json; //this does not work 
      alert(qa); //getting 0; 
     }, 'json'); 

     return qa; 
    } 
관련 문제