存储来自$ .post调用的返回数据以供日后使用?

时间:2011-04-06 14:30:39

标签: jquery ajax post

// inside $(document).ready function...

var name = '';

function test()
{
    $.post('/student/get-info', function(data) {
        var student = $.parseJSON(data);            
        name = student.name;
    });

    // use 'name' to do something here or outside of this function
}

// I want to use 'name' later without calling '/student/get-info' again

修改:name =''

修改:问题是主题标题。我的代码不起作用。在通话后,名称仍为空。这就是问题所在。

编辑:$ .getJSON错误,$ .parseJSON而不是

3 个答案:

答案 0 :(得分:2)

在全局范围内声明var student,使其可以在其他地方访问,而不是在document.ready函数内部

或者在你需要函数test(){}之前你不能弄乱全局变量,你可以删除var前缀,这会使它成为全局变量(即删除var name = 0;)

编辑:: 另外值得注意的是,AJAX是异步的,所以你所做的不起作用。加回电话做你想做的事情,而不是之后(因为学生仍然是0),或者停止呼叫异常

答案 1 :(得分:1)

如果您希望变量在$(document).ready之外变为全局变量,那么您可以在其之外初始化它 - 也许就在$(document).ready函数之前。

我认为您可能遇到的问题是您在代码中稍后检查名称变量,但在填充name之前。依赖于name的所有代码都应该在ajax调用检索数据之后运行。因此,要么在$.post()回调函数中,要么在超时或事件之后检查变量name是否已经填充。

答案 2 :(得分:0)

如果它全部在$(document).ready函数中,您将可以访问它,因为它是该范围的本地。

提供一些上下文的方法,并在询问之前实际测试您的代码。