2013-04-11 84 views
2

我有一个function Ajax调用,我没有找到一个解决方案如何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调用完成后的一段时间。这就是异步调用的本质 - 就像javascript中的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 
    }); 

}