javascript - 从 javascript 返回一个数组

标签 javascript jquery arrays ajax

因此,经过 6 个多小时的搜索和尝试各种解决方案后,我只能在 console.log(diseaseNameArray) 中记录“undefined”。我是 javascript 的新手,无法弄清楚为什么这不记录填充的数组。我非常感谢您提供的任何帮助/建议。也欢迎任何其他对代码的评论。

var diseaseNameArray;
var jax = $.ajax;

/*OutputHandler*/
function outputHandler(data, arrayTarget, tag, length) {
    var source = $(data); /*holder of xml*/
    var lengthStorage = Number(source.find(length).text()); /*length of list*/
    arrayTarget = []; //array to be populated
    for(i = 1; i < lengthStorage; i++)
    {
        arrayTarget[i] = source.find(tag + i.toString()).text();
        console.log(arrayTarget[i]); //to check that elements are being entered
    }
    console.log(arrayTarget); //succesfully logs the full array
}

/*General function*/
function populateArray(xmlLocation, typeOfData, tag, lengthStorage, extFunction, targetArray) {     
    $.ajax({
        type: "GET",
        url: xmlLocation,
        dataType: typeOfData,
        success: function(xml)
        {
            extFunction(xml, targetArray, tag, lengthStorage);
        },
        error: function()
        {
            console.log("ugh");
        }
    });
}

populateArray("malePatient.xml", "xml", "sub", "length", outputHandler, diseaseNameArray);
console.log(diseaseNameArray);

更新 多亏了 Jan 的观点,我回到了绘图板上,让它发挥作用。如果有人有建议,我将不胜感激!

最佳答案

Ajax 是异步的。您正在调用 populateArray,然后 立即在 ajax 请求完成之前将 diseaseNameArray 记录到控制台,所以它当然是未定义的——您'没有给 ajax 请求时间来完成。您需要在 success 中登录到控制台。

或者使 ajax 调用与 async: false 同步。

关于javascript - 从 javascript 返回一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31255665/

相关文章:

javascript - 在 WordPress 插件中导入 Node 模块

javascript - 使用 jquery 更改级联选择项

jquery - 如何确保您的 CSS 规则不被覆盖

python - 寻找多个县之间最大的人口差异?

javascript - Mongoose 查找多个文档

javascript - 将数学公式转换为 node.js

arrays - 应用谓词后从 JSONPath 数组结果中获取特定对象

arrays - 如何在ARM汇编中转置矩阵

javascript - 无法为 Summernote 所见即所得编辑器设置值

javascript - 如何从ajax响应加载dhtmlx网格中的数据?