2009-04-24 7 views
0

Je reçois une erreur indiquant qu'un objet est attendu dans le code ci-dessous. L'erreur est:Obtention d'une erreur attendue sur l'objet dans le code JavaScript côté serveur

Object Expected: this.regionalRankings[worldRegion][rankType] = this.getRankings(rankType, this.regionalRankingKey[worldRegion]); 

Déclarations ...

this.regions = {}; 
    this.regions = ["US", "Europe", "Asia"];  
    this.regionalRankingKey = ["SP500", "GBE", "CNG"]; //this is the ranking model key for pulling up the rankings object. 
    this.rankingTypes = ["gainers", "losers", "actives"]; 
    this.regionalRankings = {}; 
    this.rankingWSODIssues = []; 

    marketSummary_data.prototype.initRankingsNew = function(){ 

    for(var worldRegion in this.regions){   

     for (var rankType in this.rankingTypes){ 

      //this is the line getting the error. 
      this.regionalRankings[worldRegion][rankType] = this.getRankings(rankType, this.regionalRankingKey[worldRegion]); 

      for(var i = 0; i < 5; i++){ 

       this.rankingWSODIssues.push(this.regionalRankings[worldRegion][rankType].value("Result[0].Row[" + i + "].WSODIssue")); 

      } 
     }  
    } 

    for(var item in this.rankingWSODIssues){ 

     Response.Write("<p>" + item + ": " + rankingWSODIssues[item] + "</p>"); 

    }  
} 

la fonction this.getRankings retourne un objet.

marketSummary_data.prototype.getRankings = function(rankingType, rankingSet){ 
    //ranking types Epctchg+ (pct gainers) 
    //Epctchg- (pct losers) 
    //Edollar+ (net gainers) 
    //Edollar- (net losers) 
    //Evol+ (highest volume) 

    //rankingSets  

    if (rankingType == "gainers"){ 
     rankingType = "Epctchg+"; 
    } 
    if (rankingType == "losers"){ 
     rankingType = "Epctchg-"; 
    } 
    if (rankingType == "actives"){ 
     rankingType = "Evol+"; 
    } 

    var rankings = User.CreateObject("WIT.Rankings.1") 

     rankings.SetVariableName("Rankings") 
     rankings.SetInput("Ranking.RT", 0) 
     rankings.SetInput("Ranking.Type", rankingType) 
     rankings.SetInput("Ranking.Set", rankingSet) 
     rankings.SetInput("Ranking.Rows", 5) 
     rankings.SetInput("Ranking.Symbolset", "BridgeStreet"); 
     rankings.SetInput("Ranking.MinPrice", 0); // only want stocks trading higher> 0 
     rankings.Retrieve();  

    return rankings; 
} 

Toutes les idées sur ce que je fais mal ici?

+0

à quelle ligne est l'erreur? qu'est-ce que l'erreur dit exactement? – marcgg

+0

Objet prévu: this.regionalRankings [worldRegion] [rankType] = this.getRankings (rankType, this.regionalRankingKey [mondeRegion]); –

Répondre

1

Le problème est que this.regionalRankings[worldRegion][rankType] exige que this.regionalRankings[worldRegion] soit quelque chose, cependant this.regionalRankings est un objet vide, donc un "Objet est requis".

Je pense que ce que vous vouliez faire est:

for(var worldRegion in this.regions){   
    this.regionalRankings[worldRegion] = {}; // Make it into an object. 
    for (var rankType in this.rankingTypes){ 
     this.regionalRankings[worldRegion][rankType] = ... 
    } 
}  
+0

Ceci est correct. Je cherchais le même problème et tu m'as battu de quelques minutes. +1 –

+0

Ceci est en effet correct. Je sais maintenant de vérifier cela à chaque fois. Merci! –

Questions connexes