Ajax 从$获取变量值。每个匿名函数
这是我的AJAX成功回调:Ajax 从$获取变量值。每个匿名函数,ajax,jquery,scope,Ajax,Jquery,Scope,这是我的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&g
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;
}
成功:函数(数据){
var uD='';
$.each(数据['user details'],(函数(键,val){
uD+='- '+key+':'+val+'
';
});
uD+='
';
返回uD;
}
数据是一个JSON对象
如您所见,我正试图从JSON对象中构建一个列表,但当我返回变量uD
时,它还没有定义。如何才能使uD
的值超过$的范围。每个函数
对不起,我应该指定。return语句只在AJAX回调中,因为AJAX调用在另一个函数中(需要返回一些东西)由于它是异步的,我不能在AJAX调用之后返回,它必须在回调中。从AJAX回调中,您不能返回数据。我想您应该在DOM中插入内置的
UL
,因此应该在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);
}
如果在AJAX调用之前创建一个变量,并在success
函数中为其设置一个值,则可以在代码的任何其他部分读取该变量
编辑
根据您的注释(您需要从函数返回此值),所有对此函数的调用都需要等待it响应。然后,我建议您关闭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;
var uD=null;
...
async:false,
成功:功能(数据){
uD='';
$.each(数据['user details'],(函数(键,val){
uD+='- '+key+':'+val+'
';
});
uD+='
';
}
返回uD;
这不是$的问题。对于每个,您都无法从Ajax回调返回数据。请参阅:(投票决定以重复方式关闭)@Kelly:在每个回调中都没有返回
。数据被附加到回调可以访问的uD
变量中。这将正常工作。但是OP从成功
回调返回数据,这将不起作用。根据wanavak下面的评论,这个问题似乎有缺陷w、 抱歉,我应该指定。return语句仅在AJAX回调中,因为AJAX调用在另一个函数中(需要返回某些内容)由于它是异步的,我不能在AJAX调用之后返回,它必须在回调中。@wanovak,因为它是async
,您无法真正知道它何时实际返回,因此您不能在发出AJAX调用的另一个函数中依赖它。您可以让AJAX回调调用另一个函数,或者触发一个事件。从技术上说这是正确的。谢谢。
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;