2017-10-31 5 views
0

ich d3.json bin mit einem json Link von Unternehmen GitHub (gleiche Repo-/Ordner zu ziehen, dass die js Datei befindet.Typeerror wenn json Daten von Github ziehen

d3.json("https://raw.github.exampleEnterprise.com/path/to/repo/data.json?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",function(error, flare) { 
    console.log(flare); 
    root = flare; 
    update(root); 
}); 

Und ich bin immer die TypeError: flare is undefined Fehler

Wenn ich es von einem öffentlichen GitHub ziehen, alles funktioniert gut

d3.json("https://raw.githubusercontent.com/path/to/repo/data.json",function(error, flare) { 
    console.log(flare); 
    root = flare; 
    update(root); 
}); 

Als ich das Unternehmen Link mit Token in der Adresszeile eines Browsers einfügen, kann ich die ganze JSON-Datei. Also ich Es ist merkwürdig, dass es nicht durchkommt oder warum.

EDIT: ich einen Fehler hinzugefügt haben,

d3.json("https://raw.github.exampleEnterprise.com/path/to/repo/data.json?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",function(error, flare) { 
    if(error){ console.log("There was an error", error); } 
    console.log(flare); 
    root = flare; 
    update(root); 
}); 

und kann sehen, dass die Fehler, die ich empfangen habe, ist:

ein Fehler XMLHttpRequest war {onreadystatechange: null, readystate: 4, timeout: 0, withCredentials: false, Upload: XMLHttpRequestUpload, responseURL: "", status: 0, statusText: "", responseType: "", response: ""}

EDIT 2: Suchen in der Registerkarte Netzwerk Ich sah eine 200 Antwort auf meine GET Anfrage. Beim Überprüfen der Registerkarte "Antwort" der Anfrage konnte ich einen roten Fehler sehen: SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data Ich versuchte mit d3.text() anstelle von d3.json(), die immer noch "undefined" (wie ich in der Konsole sehen konnte) zurückgegeben. Das erklärt also diesen Fehler.

+0

Nur eine Ahnung, Ihre URL spezifiziert kein Protokoll. Als Standard könnte es HTTP verwenden, und vielleicht mag Github private Repos nicht über HTTP, was ist, wenn Sie 'https: //exampleEnterprise.github.com/path/to .....' – Keith

+0

guten Gedanken machen, leider schon also, obwohl es nicht klar war. Ich habe meine Frage aktualisiert, danke! – Acoustic77

+1

Ich könnte mich irren, aber normalerweise liefert GitHub Dateien wie diese mit dem Inhaltstyp 'text/plain'. Wenn deine Funktion JSON erwartet, aber einen Inhalt vom Typ Text zurückerhält, könnte das ein Problem verursachen ... – War10ck

Antwort

2

In diesem Rückruf überprüfen Sie nicht, ob ein Fehler vorliegt.

Wenn ein Fehler auftritt, sind die Daten nicht definiert.

Wenn Sie sind so etwas wie dies zu tun:

d3.json("__url__", function(error, data){ 
    if(error){ console.log("There was an error", error); } 
    else{ 
     console.log("Here is your data: ", data); 
    } 
}) 

Sie können sehen, ob es ein Fehler ist, und so lange ist es nicht ein, dann können Sie das Datenobjekt zugreifen.

Hoffe, das hilft.

+0

Es liegt ein Fehler vor, aber ich sehe keine informativen Informationen. Es sieht so aus, als würde der JSON nicht zurückkehren. – Acoustic77

+0

Können Sie die Antwort von "console.log (Fehler)" einfügen? – bobrown101

+0

Ich oben in meiner Frage unter "Fehler, den ich empfange ist" – Acoustic77