2013-04-11 3 views
2

У меня есть вызов Ajax в 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, завершается до завершения вызова 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

Это работает, но я получаю следующее: Uncaught TypeError: undefined не является функцией при обратном вызове – csaron92

+0

Нет, это не работает: \ – csaron92

1

success функция работает через некоторое время после завершения вызова Ajax. Такова природа асинхронных вызовов - вроде ajax в javascript.

Это означает, что вы не можете его вернуть и должны что-то сделать с данными в этой функции. Возможно, это текст, и вы поместите его в текстовую область, как:

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 
    }); 

} 
Смежные вопросы