jquery - 无法将我的数据从函数中取出(Javascript 和 jQuery)
问题描述
我想从我的函数之外获取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);
}
解决方案
您的代码中有一个小错误。
假设 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);
推荐阅读
- java - Java 9 模块化与微服务?
- ios - ARKit - [UIView setAnimationsEnabled:] 不支持从 UIView 或子类的后台线程执行任何操作
- ios - 如何将“Int8?”转换为“Int?”?
- cakephp - 向当前控制器添加锚点
- android - Nativescript Angular - 在 Android 选项卡上隐藏阴影
- python - Python gspread CellNotFound 异常错误
- vsto - VSTO 插件 - 自己的按钮类型,如“ShapeWidth”和“ShapeHeight”
- html - 有什么方法可以让我的 sidenav 在每个浏览器上都可以滚动
- database - VB.NET:将数据插入到连接到 MS Access 数据库的 DataGridView
- javascript - 事件侦听器“复制”不适用于“复制链接地址”