2017-11-02 1 views
0

Ich versuchte XMLhttpRequest, um einige Daten zu erhalten. Aber das gibt mir diesen Fehler.Javascript async Funktion

Uncaught TypeError: Cannot set property 'points1' of null at doSomething (match.js:36) at XMLHttpRequest.preGameRequest.onload (match.js:29)

Ich weiß nicht wirklich, was passiert mit diesem Code. Ich versuchte es eine Stunde lang selbst herauszufinden, blieb aber stecken.

Was soll ich tun?

preGameRequest.open("GET", "/matches/live.json"); 
preGameRequest.onload = function() { 
    preGameData = JSON.parse(preGameRequest.responseText); 
    doSomething(); 
} 
// line 29 is here 
preGameRequest.send(); 

function doSomething() { 
    for (var i = 0; i < preGameData[0].length; i++) { 
     // line 36 is here 
     preGameData[0][i].points1 = {success: 0, total: 0}; 
     ... 
    } 
    for (var i = 0; i < preGameData[1].length; i++) { 
     preGameData[1][i].points1 = {success: 0, total: 0}; 
     ... 
    } 
    ... 
} 
+0

Was ist in 'preGameRequest.responseText'? – Maxim

+2

Nun, es heißt, dass 'preGameData [0] [i]' null ist, also würde ich anfangen, dort zu debuggen und herauszufinden, warum. Scheint, als hätte dies nichts mit dem Ajax-Aufruf zu tun, scheint das Problem zu sein, dass die Daten zurückgegeben werden und wie du darauf zugreifst. Zeigen Sie uns Ihr JSON. – epascarello

+1

Es könnte von Vorteil sein, den Inhalt von 'live.json' in Ihre Frage aufzunehmen. – BugHunterUK

Antwort

0

Ohne Ihre Daten zu sehen, es ist unmöglich, die Ursache für den Fehler hinweisen festzustecken, aber Sie können in Ihrem Code überprüfen, ob es null ist, bevor zu setzen points1 versuchen.

if (preGameData[0][i] !== null) { 
    preGameData[0][i].points1 = {success: 0, total: 0}; 
}