javascript - 再说一遍,如何从回调中获取数据?

标签 javascript jquery

我有这个代码

var children;
$.ajax({
    url: Routing.generate('snmp_ajax_get_children', {dev: root}),
    async: true, type: "GET"
}).done(function(data) {
    var children = Array(); 
    for(var i in data) {
        children[i] = data[i].split('|');
        for (var j in data[i]) {
            children[i][j] = $.trim(data[i][j]);
        }
    }
    localStorage.setItem('children', children);
});
children = localStorage.getItem(children);
localStorage.removeItem('children');

我使用 localStorage (丑陋,我知道)从回调中获取数据,因为任何其他方法都不适合我(我不知道为什么),有什么建议吗?

最佳答案

由于您使用异步ajax,因此在完成真正完成之前您无法请求响应结果。要实现这样的目标,您可以这样做:

// receiving data
function getData( callback ) {
    $.ajax({
        url: Routing.generate('snmp_ajax_get_children', {dev: root}),
        async: true, type: "GET"
    }).done(function(data) {
        // is async, so it takes some time until this is triggered...
        // I don't know your response but I think children should be 
        // an object: 
        // var children = {};
        var children = Array(); 
        for(var i in data) {
            children[i] = data[i].split('|');
            for (var j in data[i]) {
                children[i][j] = $.trim(data[i][j]);
            }
        }
        // calling your data handler with the data
        callback( children );
    });
}

// your data handler
function handleData( data ) {
    // do whatever

} 


// call the action, setting the callback
getData ( handleData );

关于javascript - 再说一遍,如何从回调中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14869707/

相关文章:

javascript - 使用 contenteditable 计算字符数

javascript - 如何在html文本区域逐行阅读文本?

jquery - AJAX 运行后 CSS 样式不会刷新

javascript - 在添加选项后选择出现问题

Jquery 网络摄像头插件 - 错误 : Flash movie not yet registered

javascript - 使用时间轴谷歌图表 api 与 php - 数据表初始化

javascript - 如何在单选按钮上调用指令以在 Angular Js 中设置值

javascript - 使用 jQuery 在单击输入时忽略表单提交

javascript - AngularJS Controller 重新加载

javascript - 检查JavaScript中的div id