// 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而不是
答案 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
函数中,您将可以访问它,因为它是该范围的本地。
提供一些上下文的方法,并在询问之前实际测试您的代码。