我正在使用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请求完成。
饮歌长啸
TA贡献1951条经验 获得超3个赞
如果要在完成时执行其他ajax,则可以在上一个ajax的done
函数上调用下一个ajax调用。
$.ajax({ ... }).done(second_ajax_fn);
您也可以设置,async:false
但不建议
添加回答
举报
0/150
提交
取消