javascript中的多个数组不会传递值

时间:2016-05-25 09:03:07

标签: javascript jquery arrays ajax

我试图在JS中创建一个多维数组,如下所示:

在我的app.js文件中,我有这个

 var equipValue = new Array(); 
 var selectedTrucks  = new Array();

在我的function.js文件中,我有:

for (var i in selectedTrucks) {
    (function(i){
        // Simple Ajax request that return me a Json values
        var ajaxUrl = '/ajaxRequest/getSingleTruckPosition/' + selectedTrucks[i];

        $.ajax({
            url: ajaxUrl,
        })
        .done(function(data) {
            if(data != null){
                //  equipValue doens't go. 
                // Unable to set property '0' of undefined or null reference
                equipValue[i] = jQuery.parseJSON(data);
             }
         });

为什么我获得:无法设置属性' 0'未定义或空引用? 为什么变量对我的function.js文件起作用,但selectedTrucks工作得很好?

谢谢你

修改

做一些测试我试过这个:

 equipValue = jQuery.parseJSON(data);

那么,问题不是scoope但是在Runtime上创建多维数组?还是类似的?

**编辑2 **

问题在于:

 var selectedTrucks     = new Array();
 // other 15 lines of codes and then this:
 if(selectedTrucks === undefined || selectedTrucks.length == 0){
        cleanMapMarkers();
    }

为什么即使selectedTrucks为空,也始终会启动cleanMapMakers()?我发现的所有问题都在这里。 感谢

2 个答案:

答案 0 :(得分:2)

  • 更新:似乎equipValue在其他地方被更改或覆盖到其他类型。

在您的代码中,您可能正在寻找,如果selectedTrucks未定义或者它是否为空

if(selectedTrucks === undefined || selectedTrucks.length != 0){
        cleanMapMarkers();
    }
  • jQuery.parseJSON()将json文本解析为一个对象,但回调已经返回一个对象
.done(function(data) {
         if (data != null) {
           equipValue[i] = data;

http://jsfiddle.net/dw74gk7j/

答案 1 :(得分:0)

for var i in *object*

用于迭代对象属性。

所以在equipValue[i]中你似乎有equipValue['131-00004131']

equipValue = {
       131-00004131: 'your data'
}