2010-08-08 76 views
3

基本上我试图调用一个函数(函数1),它从另一个函数(函数2)获取结果。这个函数2正在进行ajax调用。如何获得jQuery AJAX调用的结果,然后调用另一个函数

因此,代码会是这样:

function f1() { 
    var results = f2(); 
} 

function f2() { 
    $.ajax({ 
     type: 'POST', 
     url: '/test.php', 
     success: function(msg){ 
     } 
    }); 
} 

我知道这是我成功的功能显示一个警告,我得到的结果。但是,我们如何才能使这个结果回传?

我tryed做这样的事情里面函数2没有成功:

回报味精;

感谢您的帮助

+0

您在meder的文章中评论了尝试使用相同的ajax进行多个调用。你可以扩展这个吗? – 2010-08-12 06:02:16

回答

4

从理论上讲,这是可能使用jQuery的async: false设置。该设置使呼叫同步,即浏览器等待完成。

虽然这被认为是不好的做法,因为它可能会冻结浏览器。您应该重新构建您的脚本,以便在success回调中代替f1执行相关操作。我知道这比你在f1()中做的不太方便,但它是处理Ajax异步特性的正确方法。

2

可以有力地发出请求同步(有点失去了Ajax的利益),但让你的代码工作:

function f2() { 
    var ret = false; 
    $.ajax({ 
     type: 'POST', 
     url: '/test.php', 
     async:false, 
     success: function(msg){ 
      ret = msg 
     } 
    }); 
    return ret; 
} 

否则,您必须对您的success函数添加一个回调,如果你想保留它异步..

function f2() { 
    $.ajax({ 
     type: 'POST', 
     url: '/test.php', 
     async:false, 
     success: function(msg){ 
      doSomething(msg); 
     } 
    }); 
} 
+0

感谢您的答案球员 据我所知这是一个异步/同步问题... 我的purpuse是为了避免有多次相同的AJAX调用,当我有几个不同的事情要做的调用结果。 所以我一直在寻找的方式是由一个,2个或更多不同的功能调用AJAX函数... 但据我了解,如果我需要保持异步模式,我需要做一个不同的方式。 – kire 2010-08-08 18:31:08

相关问题