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);
}

09-10 17:27