Possible Duplicate:
jQuery: Return data after ajax call success
首先,我对JS或jQuery的经验不是很丰富,但是就我的编程技能而言,我似乎找不到任何错误的方法。
var subtree;
$.post("addTreeServlet",
{
term:clickedNode,
max:maxId,
id:clickedId
},
function(jsonResponse){
subtree = eval('(' + jsonResponse + ')');
}
);
$jit.json.prune(subtree, level);
return {
'id': nodeId,
'children': subtree.children
};
我使用调试器检查了代码,这是发生的情况:该程序从addTreeServlet返回,并传输一个表示JSON数据的String。 eval()函数接受此String并将其转换为JSON对象(再次,它在调试器中看起来很好)。但是,一旦我离开函数(jsonResponse),var子树就会显示为未定义,并且我不知道为什么。
那是因为jQuery方法吗?我不知道...
如果我只是将subtree =“ whatever”,它也是相同的行为。我退出函数后,它就变得不确定。
最佳答案
它正在等待发布响应,但是浏览器会立即解析您的休闲脚本。因此,在收到回复后,您需要对ajax响应做您想做的事情。
function(jsonResponse){
var subtree = eval('(' + jsonResponse + ')');
doSomthingWithResponse(subtree);
}