ajax 里的each,关于ajax:从$ .each匿名函数获取变量值

本问题已经有最佳答案,请猛点这里访问。

这是我的AJAX成功回调:

success: function(data){

var uD = '

  • ';

$.each(data['user details'], (function(key,val){

uD += '

' + key + ':' + val + '

';

});

uD += '

';

return uD;

}

data是一个JSON对象。

正如您所看到的,我正在尝试从JSON对象构建一个列表,但是当我返回变量uD时,它是未定义的。 如何获得超出$ .each函数范围的uD的值?

编辑:对不起,我应该指定。 return语句只在AJAX回调中,因为AJAX调用在另一个函数内(需要返回一些东西。)因为它是异步的,所以我无法在AJAX调用之后返回,它必须在回调中。

这不是$.each的问题,您无法从Ajax回调中返回数据。 请参阅:jQuery:在ajax调用成功后返回数据(投票被关闭为重复)

@Kelly:each回调中没有return。 数据附加到回调有权访问的uD变量。 这将正常工作。 但是OP正在从success回调中返回数据,这不起作用。

根据wanavak的评论,似乎这个问题存在缺陷。

从Ajax回调中,您无法返回数据。 我想你要插入你已经构建到DOM中的UL,所以你应该在Ajax回调函数中进行。

success: function(data){

var uD = '

  • ';

$.each(data['user details'], (function(key,val){

uD += '

' + key + ':' + val + '

';

});

uD += '

';

$('body').append(uD);

}

而不是body指定要插入的元素或使用任何其他DOM插入函数。

使用异步AJAX调用你不可能真正return。 所以你不能做像这样的事情

function GetMyList() {

//AJAX CALL

//RETURN RESULT OF AJAX CALL

}

对不起,我应该指定。 return语句只在AJAX回调中,因为AJAX调用在另一个函数内(需要返回一些东西。)因为它是异步的,所以我无法在AJAX调用之后返回,它必须在回调中。

@wanovak因为它是async你真的不知道它什么时候会实际返回,所以你不能在你进行AJAX调用的another function中依赖它。 你可以让你的AJAX回调调用另一个函数,或者触发一个事件。

从技术上讲这是正确的。 谢谢。

如果在AJAX调用之前创建变量并在success函数内设置一个值,则可以在代码的任何其他部分读取变量。

编辑

根据您的注释(您需要从函数返回此值),您对此函数的所有调用都需要等待响应。 然后,我建议你关掉async。

var uD = null;

...

async: false,

success: function(data){

uD = '

  • ';

$.each(data['user details'], (function(key,val){

uD += '

' + key + ':' + val + '

';

});

uD += '

';

}

return uD;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值