我可以包装这段代码,以便在调用函数时返回包含json对象的变量吗?
示例:
function GetNewSomething() {
var newtb = 0;
$.get("/something/new",
function (data) {
newtb = data;
}
);
return newtb; // as of now this always returns undefined...
}
尝试过这种方法,但只返回未定义的..
提前感谢,伙计们!
致以敬意,
发布于 2011-01-20 20:51:38
你不能。Ajax调用是异步的。你必须向你的函数传递一个回调:
function GetNewSomething(cb) {
$.get("/something/new", cb);
}
并使用以下命令调用它:
GetNewSomething(function(data) {
// do something with data
});
I wrote something about it。
哦,如果响应是JSON字符串,那么您可能希望使用.getJSON
,它也可以将响应解码为JavaScript对象。
发布于 2011-01-20 20:52:07
.get()
是$.ajax()
的包装器。如果没有明确配置,所有AJAX请求都会以方式异步运行。这反过来意味着,您的return newtb;
语句将在$.get()
完成之前执行。
解决此问题的一个好方法是自己调用另一个回调。这可能看起来像这样:
function GetNewSomething(callback) {
$.get("/something/new",
function (data) {
if( typeof callback === 'function' )
callback.apply(this, [data]);
}
);
}
然后叫它像这样
GetNewSomething(function(data) {
// do something with data
});
发布于 2011-01-20 20:52:06
$.get
是异步的,这就是在get请求返回时向它传递一个要调用的函数的原因。
https://stackoverflow.com/questions/4747300
复制相似问题