2017-02-18 4 views
0

Ich habe zwei Funktionen, die nacheinander aufgerufen werden. Beide versuchen die Länge eines Array-Objekts zu überprüfen. (obj) so ein Ausschnitt aus meiner HTML-Datei:Javascript Objekt undefiniert, wenn an Funktion übergeben

$.ajax({ 
     type: 'POST', 
     url: 'http://localhost:30232/Request', 
     data: JSON.stringify(myjson), 
     contentType: "application/json", 
     success: function (responseData, textStatus, jqXHR) { 
      var x = responseData; 
      clearResultsTable(); 
      $("#Results").show(); 
      createResultsTable(x); 
      createGraph(x); 
      $("#Results").trigger("click"); 
     }, 
     error: function (responseData, textStatus, errorThrown) { 
      var x = responseData; 
      $("#sres").text(x.Amount); 
     } 
    }); 

jedoch in der Konsole mir dies immer: Undefined Object

Wie kommt ich OK bin die Länge von obj in dem ersten Funktionsaufruf überprüfen. aber nicht der zweite? Und wenn es nicht definiert ist, wie kann der Debugger alle Elemente in obj in der zweiten Funktion sehen?

Javascript:

function createResultsTable(obj) { 
    var counter = 0 
    var arrlen = obj.length; 
    var sym = $("#inSymbol").val(); 

    while (counter < arrlen) { 
     $("#ResultsTable").append("<tr class='dataRow'><td>" + obj[counter].Month + "</td><td>" + sym + obj[counter].Capital + "</td><td>" + sym + obj[counter].Interest + "</td><td>" + sym + obj[counter].Total + "</td><td>" + sym + obj[counter].OverpaymentAmount + "</td></tr>") 
     counter++ 
    } 
} 

function createGraph(obj) { 
    var data = new google.visualization.DataTable(); 
    var counter = 0 

    data.addColumn('string', 'Month'); 
    data.addColumn('number', 'Capital'); 
    data.addColumn('number', 'Interest'); 

    while (counter < obj.length) { 
     data.addRows([ 
      [obj[counter].Month, obj[counter].Capital, obj[counter].Interest] 
     ]); 
     counter++ 
    } 

    var options = { 
     title: 'Interest/Capital by Month', 
     legend: { 
      position: 'bottom' 
     } 
    }; 

    var chart = new google.visualization.LineChart(document.getElementById('chartArea')); 
    chart.draw(data, options); 
} 
+0

Woher kommt 'responseData'? –

+0

Geben Sie also kein Bild Ihres Codes ein, sondern fügen Sie den Code in Ihrer Frage hinzu, damit wir Ihr Problem reproduzieren können. – trincot

+0

responseData ist das Ergebnis eines AJAX POST –

Antwort

0

haben gefunden, dass dies mit der Callback-Funktion des Google Charts Loader zu tun. Welche hat die Funktion ohne Parameter aufgerufen.

Verwandte Themen