这是我的AJAX成功回调:
success: function(data){
var uD = '<ul class="user-details">';
$.each(data['user details'], (function(key,val){
uD += '<li><label>' + key + ':</label><span>' + val + '</span></li>';
});
uD += '</ul>';
return uD;
}
data是一个JSON对象。
正如您所看到的,我正在尝试使用JSON对象构建一个列表,但是当我返回变量uD
时,它是未定义的。如何获得超出$ .each函数范围的uD
的值?
编辑:对不起,我应该指定。 return语句只在AJAX回调中,因为AJAX调用在另一个函数内(需要返回一些东西。)因为它是异步的,所以我无法在AJAX调用之后返回,它必须在回调中。 / p>
答案 0 :(得分:2)
从Ajax回调中,您无法返回数据。我想你想要将你已构建的UL
插入到DOM中,所以你应该在Ajax回调函数中进行。
success: function(data){
var uD = '<ul class="user-details">';
$.each(data['user details'], (function(key,val){
uD += '<li><label>' + key + ':</label><span>' + val + '</span></li>';
});
uD += '</ul>';
$('body').append(uD);
}
而不是body
指定要插入的元素或使用任何其他DOM插入函数。
使用异步AJAX调用,你无法真正return
。所以你不能做像
function GetMyList() {
//AJAX CALL
//RETURN RESULT OF AJAX CALL
}
答案 1 :(得分:0)
如果你在 AJAX调用之前创建一个变量并在里面设置一个值 success
函数,你将能够读取它的变量你编码的任何其他部分。
修改强>
根据您的评论(您需要从函数返回此值),您对此函数的所有调用都需要等待响应。然后,我建议您关闭async
。
var uD = null;
...
async: false,
success: function(data){
uD = '<ul class="user-details">';
$.each(data['user details'], (function(key,val){
uD += '<li><label>' + key + ':</label><span>' + val + '</span></li>';
});
uD += '</ul>';
}
return uD;