2016-05-25 6 views
1

Werte Ich versuche, eine mehrdimensionale Arrays in JS wie diese zu erstellen:Mehrere Arrays in Javascript doens't Arbeit Weitergabe

Auf meiner app.js Datei Ich habe diese

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

In meiner Funktion Js-Datei stattdessen habe ich:

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

Warum ich erhalten: Kann Eigenschaft auf ‚0‘ undefinierter oder nULL-Verweis? Warum funktionieren diese Variablen nicht in meiner Datei function.js, aber selectedTrucks funktioniert einwandfrei?

Dank Kerl

EDIT

Doing einigen Test ich das versucht habe:

equipValue = jQuery.parseJSON(data); 

So wird das Problem nicht Scoope aber mehrdimensionales Array auf Runtime erstellen? O.ä?

** EDIT 2 **

Hier ist das Problem:

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

Warum cleanMapMakers() immer noch gestartet, wenn selectedTrucks leer ist ?? Alle Probleme, die ich gefunden habe, sind hier. Danke

+0

Es ist ein einfaches arays wie folgt aus: Ausgewählte LKW: 131-00004131, 132-00004132 –

+0

Sind Sie im Strict-Modus? Wenn nicht, bedeutet das, dass es implizit eine globale Variable erzeugt, was leider nicht beweist, dass es sich nicht um ein Scoping-Problem handelt. [Geige] (https://jsfiddle.net/f2aqb3sa/1/) – ste2425

Antwort

2
  • Update: scheint equipValue geändert wird, oder auf einen anderen Typ, woanders überschrieben.

In Ihrem Code, vielleicht Sie suchen, wenn selectedTrucks nicht definiert ist oder wenn es

if(selectedTrucks === undefined || selectedTrucks.length != 0){ 
     cleanMapMarkers(); 
    } 
zu einem Objekt
  • jQuery.parseJSON() parst json Text nicht leer ist, aber der Rückruf bereits Benutzer kehrt Objekt

http://jsfiddle.net/dw74gk7j/

+0

"Objekt unterstützt keine Eigenschaft oder Methode 'bind'" ...... Mit offensichtlich der gleichen Präzedenzfall Fehler .. –

+0

Edge mit dem letzten Build von Windows 10. Aber funktioniert nicht auch mit Chrome –

+0

Vielleicht brauchen Sie Klammern für die 'function() {...}' Teil und rufen Sie dann 'bind' –

0
for var i in *object* 

wird verwendet, um Eigenschaften eines Objekts iterieren.

So in equipValue[i] scheint Sie equipValue['131-00004131'] zu haben, die

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