2013-04-11 3 views
2

나는 function에서 아약스 전화를하고 난 데이터를 return하는 방법을 해결책을 찾지 못했습니다 :반환 아약스 데이터

function get_blog_post(id){ 

    var info="id="+id; 
    $.ajax({ 
      type: 'POST', 
      url: 'get_blog_post.php', 
      data: info, 
      success: function(data){ 
       return data; 
      } 
    }); 

} 

위의 코드는 작동하지 않습니다. data에는 정답이 포함되어 있지만 전화를 걸면 사용할 수 없습니다. get_blog_post()function.

:

+1

아약스 호출을 호출하는 함수가 Ajax 호출이 완료되기 전에 완료되기 때문에 완료 할 수 없습니다. –

+0

성공 함수에서는 응답 데이터를 다른 js 함수로 보내 처리합니다. [this] (http://stackoverflow.com/questions/15945278/how-to-get-json-data-from-the-urlrest-api-to-ui-using-jquery-or-java-script/15945449 # 15945449) 도움을받을 수 있습니다. –

답변

4
function get_blog_post(id, callback){ 

    var info="id="+id; 
    $.ajax({ 
     type: 'POST', 
     url: 'get_blog_post.php', 
     data: info, 
     success: function(data){ 
      callback(data); 
     } 
    }); 
} 

get_blog_post(5, function(data){ 
    // use data here 
}); 

또는 설정 비동기는 = 거짓 (권장하지 않음) :

$.ajax({ 
     type: 'POST', 
     url: 'get_blog_post.php', 
     data: info, 
     async: false, 
     success: function(data){ 
      return data; 
     } 
    }); 
+0

+1 ^이 부분에 동의 –

+0

작동하지만 알 수없는 형식 오류 : 콜백에서 함수가 정의되지 않았습니다. – csaron92

+0

아니요, 작동하지 않습니다. \ – csaron92

1

success 기능 \는 AJAX 호출이 완료된 후 약간의 시간을 실행합니다. 비동기 호출의 특성입니다. 자바 스크립트의 아약스와 같습니다.

즉, 반환 할 수 없으며 해당 기능의 데이터로 무언가를해야한다는 의미입니다. 아마도 그것은 텍스트 그리고 당신은 같은 텍스트 영역에 넣어 :

success: function(data){ 
      $('textarea').val(data); 
     } 
1

콜백 방법을 제공 할 어떤 적 내부적으로 수행하고 싶습니다.

function get_blog_post(id, callback){ 

    var info="id="+id; 
    $.ajax({ 
      type: 'POST', 
      url: 'get_blog_post.php', 
      data: info, 
      success: callback 
    }); 

}