为了账号安全,请及时绑定邮箱和手机立即绑定

在成功使用AJAX的函数中使用时,数组内容不会更改

在成功使用AJAX的函数中使用时,数组内容不会更改

叮当猫咪 2021-04-26 10:11:55
我正在使用AJAX解析json,但是一切正常,尽管当我尝试调用传递循环索引值的函数,然后函数将其推入Global数组时,似乎没有在推这些值即使console.log()在每一步都按要求打印出所有内容,但是当我检查数组长度时,它始终为0。//This bit of code is actually inside a function and another ajax success   $.each(updatedData, function(index, element) {          $.ajax({            type: 'GET',            url: 'https://en.wikipedia.org/w/api.php?action=query&prop=extracts&exintro&explaintext&format=json&redirects&callback=?&titles='+updatedData[index],            data: { get_param: 'value' },            dataType: 'json',           success: function (data) {                    console.log('success wiki');                   //getting the pagenumber key value to use the extract value from it                   var pagenum = Object.keys(data.query.pages);                   if(data.query.pages[pagenum[0]].extract == null)                   {                     recycleData(index);                   }            }    });   });//this is the function which should push the trash value to the trashData //the console.log actually logs all the correct values yet still doesn't pushfunction recycleData(trash){console.log("sliced - "+trash);trashData.push(trash);}//that's how the array is defined, it's obviously defined before all the functions just in case someone would askvar trashData = [];更新:我已经测试了延迟后的数组长度,在所有ajax请求都完成之后会填充它,但是我需要其他请求来等待此请求完成,以便其他请求将使用更新的数据。此请求是另一个ajax成功,因此请记住这一点。
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

问题可能是您在trashData实际异步请求完成之前正在检查的值。如果要确保所有请求均已完成,然后再检查(或发出更多请求),则需要jQuery Deferred-等待多个AJAX请求完成


查看完整回答
反对 回复 2021-05-06
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

如果要在完成时执行其他ajax,则可以在上一个ajax的done函数上调用下一个ajax调用。

$.ajax({ ... }).done(second_ajax_fn);

您也可以设置,async:false但不建议


查看完整回答
反对 回复 2021-05-06
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信