数据不为空-如果我警告js文件中的值,它们就在那里了!
函数:
.js文件中的第一个函数(在执行之前包含在内)
var lock_get = 0;
function get_data(data, destination)
{
if (lock_get == 0)
{
lock_get = 1;
$.ajax({
type: "POST",
url: destination,
async: true,
data: data,
success: function(data)
{
lock_get = 0;
if (data)
{
return data;
}
}
});
}
};
所以这是执行部分:
var test = get_data(data, destination);
notice(test);
并且测试为空...我已经尝试过不同的编写方式,但是我想我误解了js的可能性吗?
#1 楼
您不能这样做:由于调用是异步的,因此get_data函数无法返回ajax调用的结果。您应该做的是提供get_data函数的回调并处理结果在回调中。
function get_data(data, destination, callback)
{
if (lock_get == 0)
{
lock_get = 1;
$.ajax({
type: "POST",
url: destination,
async: true,
data: data,
success: function(data)
{
lock_get = 0;
if (data && callback)
{
callback(data);
}
}
});
}
};
并像这样调用:
get_data(data, destination, function(test){
notice(test);
});
评论
严重感谢您没有考虑回调!当然它现在可以工作了:)...
–伊万·史瑞克利希(Ivan Schrecklich)
2012年9月18日上午10:48
#2 楼
另外,您也可以从同步AJAX调用返回,使用同步调用通常是个坏主意,但有时可能有用:http://pratyush-chandra.blogspot.com/2012/04/store -ajax-json-response-into.html
评论
@Tuscan编号async:false已被弃用,始终是个坏主意如何从Ajax调用返回响应的可能重复项?