首页 > 解决方案 > 完成后无法将 Ajax 调用中的元素推送到全局范围的数组

问题描述

我的函数中有一个全局声明的数组,我想将元素从 AJAX 调用推送到该数组。

AJAX 调用:

function getDatesFromAJAX() {
  return $.ajax({
    type: "GET",
    url: "http://localhost:8080/api/dates/1",
    success: function(dates) {},
    error: function(xhr) {
      alert("Request status: " + xhr.status + " Status text: " + xhr.statusText + " " + xhr.responseText);
    }
  });
}

var dateArray = new Array();

    // populate dateArray
    $.when(getDatesFromAJAX().done(function(dates){
        $.each(dates, function (index, date) { 
            dateArray.push(date);
        });
        console.log("DATE ARRAY INSIDE FUNCTION: ", dateArray);
        console.log("DATE ARRAY LENGTH INSIDE FUNCTION: ", dateArray.length); // 2 (expected)
    }));
    console.log("DATE ARRAY OUTSIDE FUNCTION: ", dateArray);
    console.log("DATE ARRAY LENGTH OUTSIDE FUNCTION: ", dateArray.length); // 0

虽然函数外部的 dateArray 可能包含一些东西,但它没有长度,所以我不能迭代它。我认为由于 AJAX 调用的性质,它可能无法正确填充,考虑到行 'console.log("DATE ARRAY OUTSIDE FUNCTION:", dateArray)'在 DATE ARRAY INSIDE FUNCTION 行之前打印。

这就是控制台显示的内容。

标签: javascriptjqueryajax

解决方案


推荐阅读