首页 > 解决方案 > 无法将我的数据从函数中取出(Javascript 和 jQuery)

问题描述

我想从我的函数之外获取arrayDevice, arrayidDevice, arrayDomCommande,但我不知道如何获取所有这些值并将它们放在这个函数之外以便之后使用它。arrayidCommandelectureCommand

这是我的代码:

function getCommand () {
        var nameDevice = []; 
        var idDevice = []; 
        var nomCommande= []; 
        var idCommande= []; 
        $.ajax({
            url:'/core-command/api/v1/device',
            type: 'GET',
            success:function(device){

                    for (var i in device)
                    {
                        // Noms des périphériques 
                        //console.log(device[i].name);
                        nameDevice = device[i].name;

                        // Noms des id du device
                        //console.log(device[i].id);
                        idDevice = device[i].id;

                        // Nom des commandes du device 
                        // console.log(device[i].commands[i]);
                        nomCommande = device[i].commands[0].name;

                        // id de la commande 
                        //console.log(device[i].commands[0].id);
                        idCommande = device[i].commands[0].id;
                        lectureCommand(nameDevice,idDevice,nomCommande,idCommande); 

                    }
             }

        });
    }
    // Declaration 
    arrayDevice = [];
    arrayidDevice = []; 
    arrayDomCommande = []; 
    arrayidCommande = []; 
    arrayDescription = [];

    function lectureCommand(nameDevice,idDevice,nomCommande,idCommande) 
    {
        arrayDevice.push(nameDevice);
        arrayidDevice.push(idDevice);
        arrayDomCommande.push(nomCommande);
        arrayidCommande.push(idCommande);
    }

标签: jqueryajaxfunctionget

解决方案


您的代码中有一个小错误。

假设 Ajax 成功函数是这样的:

function ajaxsuccess(){
    lectureCommand(1,2,3,4);//testing with 1,2,3,4 args...
}

当您调用getCommand()函数时,您的代码将执行为:

function ajaxsuccess(){
    lectureCommand(1,2,3,4);
}
ajaxsuccess();

    arrayDevice = [];
    arrayidDevice = []; 
    arrayDomCommande = []; 
    arrayidCommande = []; 
    arrayDescription = [];

    function lectureCommand(nameDevice,idDevice,nomCommande,idCommande) 
    {
        arrayDevice.push(nameDevice);
        arrayidDevice.push(idDevice);
        arrayDomCommande.push(nomCommande);
        arrayidCommande.push(idCommande);
    }
console.log(arrayDevice,arrayidDevice,arrayDomCommande,arrayidCommande);

查看代码段中的错误:

“消息”:“未捕获的 ReferenceError:未定义数组设备”

这意味着函数也是arrayDevice未定义的变量。lectureCommand()因此,您在 undefined array( arrayDevice.push(nameDevice))中推送值

这个问题的解决方案是在脚本的开头定义全局变量,见工作片段:

//Define global variables at start of the script...
    arrayDevice = [];
    arrayidDevice = []; 
    arrayDomCommande = []; 
    arrayidCommande = []; 
    arrayDescription = [];

function ajaxsuccess(){
    lectureCommand(1,2,3,4);
}
ajaxsuccess();    
    function lectureCommand(nameDevice,idDevice,nomCommande,idCommande) 
    {
        arrayDevice.push(nameDevice);
        arrayidDevice.push(idDevice);
        arrayDomCommande.push(nomCommande);
        arrayidCommande.push(idCommande);
    }
console.log(arrayDevice,arrayidDevice,arrayDomCommande,arrayidCommande);


推荐阅读