Javascript 等待jquery中getJSON finish的回调

Javascript 等待jquery中getJSON finish的回调,javascript,jquery,callback,getjson,Javascript,Jquery,Callback,Getjson,我有这样的想法: <div id="content"></div> function getData(id) { $.getJSON('url/to/jsondata',{id: id}, function(data) { /** append some data to div#content **/ $('#content').data('key', 'value'); console.log($('#

我有这样的想法:

<div id="content"></div>
function getData(id) {
    $.getJSON('url/to/jsondata',{id: id}, function(data) {
         /** append some data to div#content  **/
         $('#content').data('key', 'value');

         console.log($('#content').data('key'));
     });
然后我想在脚本中获取#内容的数据:

$(document).ready(function() {
    getData(1); // run getData with some id
    console.log($('#content').data('key'));
});
问题是在getJSON finish回调之后console.log并没有运行,所以我在log中得到了一个未定义的值。 哪种方法才是正确的?
谢谢!

您已经在
getJSON
调用中定义了回调。要获得结果,请将您的console.log代码放在与
/**相同的函数中,将一些数据附加到div#content**/
注释中


下面是getJSON的jQuery文档,这样您就可以看到哪个参数是正确的,以及如何布局它:

您应该像这样将日志调用放入回调函数中:

<div id="content"></div>
function getData(id) {
    $.getJSON('url/to/jsondata',{id: id}, function(data) {
         /** append some data to div#content  **/
         $('#content').data('key', 'value');

         console.log($('#content').data('key'));
     });

从ajax函数返回差异对象,并对其使用always、done或fail方法:

function getData(id) {
    return $.getJSON('url/to/jsondata',{id: id}, function(data) { //return this
         $('#content').data('key', data);
     });
}

$(document).ready(function() {
    getData('content').always(function() { //is returned as deffered object
        console.log($('#content').data('key')); //runs when ajax completed
    });
});​

@TheZ你的评论是一个答案-你应该把它作为一个,这样它就可以作为一个答案投票。对不起,没有看到你的答案,+1 from me=)@Mario别担心,你有示例代码,当所有其他的都失败时,它总是有帮助的@z+Mario:console.log只是为了检查我得到的值。我想在while循环中使用$('content').data('key'),如下:
while($('content').data('key')