Не могу взять мои данные из функций (Javascript & jQuery) - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу взять arrayDevice, arrayidDevice, arrayDomCommande, arrayidCommande извне моей функции lectureCommand, но я не знаю, как взять все эти значения и поместить их вне этой функциииспользовать его после.

Это мой код:

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);
    }

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Спасибо за ваш ответ, но у меня все еще есть проблема, когда я пытаюсь после функции lectureCommand получить доступ к моим массивам, она не работает, я попытался выполнить console.log (), и у меня есть:

// Это то, что я получаю с console.log («test» + arrayDevice [0]): test undefined

// Это то, что я получаю внутри ajax для устройства [i] .name: VM641: 25 ajax Random-Integer-Generator01: VM641: 25 ajax Random-Boolean-Device => VM641: 25 ajax Random-Integer-Device VM641: 25 ajax Random-UnsignedInteger-Device VM641: 25 ajax Random-Float-Device

// Это то, что я получаю с console.log (arrayDevice): [] 0: «Random-Integer-Generator01» 1: «Random-Boolean-Device» 2: «Random-Integer-Device» 3: "Random-UnsignedInteger-Device" 4: "Random-Float-Device"

Это мой модифицированный код:

 $(document).ready(function(){
          // Declaration 
        arrayDevice = [];
        arrayidDevice = []; 
        arrayDomCommande = []; 
        arrayidCommande = []; 
        arrayDescription = [];

        // Get des données lues dans core-data
        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("ajax "+ 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); 

                        }

                 }

            });
        }

        function lectureCommand(nameDevice,idDevice,nomCommande,idCommande) 
        {
            arrayDevice.push(nameDevice);
            arrayidDevice.push(idDevice);
            arrayDomCommande.push(nomCommande);
            arrayidCommande.push(idCommande);
        }
      console.log("test "+ arrayDevice[0]);
0 голосов
/ 09 ноября 2019

В вашем коде есть небольшая ошибка.

Предположим, что функция успеха 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);

См. Ошибку во фрагменте:

"message": "Uncaught ReferenceError: arrayDevice не определено"

Это означает, что arrayDevice является неопределенной переменной для функции lectureCommand(). Следовательно, вы помещаете значение в неопределенный массив (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);
...