2010-09-25 185 views
2

我有一个像这样的函数,它执行ajax调用来从数据库中获取一些数据。javascript函数返回数据

function db (content) { 
     $.post('/ajax/db.php', { 
      operation:operation, 
      content:content 
     }, function(data) 
     { 
      console.log(data); 
      return data; 
     }); 
    } 

console.log(data);给了我想要的数据。

但是我如何通过data运作分贝,这样我可以这样做:

var returnedData = db ('content'); 

谢谢!

回答

8

AJAX操作是异步的,因此直接返回它不是一个选项,除非让它同步(这会锁定浏览器)。相反,你应该将数据传递到下一个功能回调,像这样:

function db (content) { 
    $.post('/ajax/db.php', { 
     operation:operation, 
     content:content 
    }, function(data) 
    { 
     nextFunction(data); 
    }); 
} 

或使其采取的回调,所以你可以传递,将得到的数据的功能,当它准备好了,就像这样:

function db (content, callback) { 
    $.post('/ajax/db.php', { 
     operation:operation, 
     content:content 
    }, callback); 
} 

然后调用它提供的回调函数,例如:

db('content', function(data) { 
    //do something with data 
}); 
+0

只是要知道我的选择,我怎么让它同步? – Mark 2010-09-27 23:16:59

+0

@Mark - 您可以使用完整的'.ajax()'版本(例如在'.post()'文档中:http://api.jquery.com/jQuery.post/)和'async:假,'选项添加....但如果可能,避免这样做:) – 2010-09-27 23:21:47

+0

伟大的解释,谢谢。 – Mark 2010-09-27 23:40:17