我有这个代码
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/