2016-12-04 2 views
-1

Ich erhalte eine Fehlermeldung: "Uncaught ReferenceError: getData ist nicht definiert", wenn Sie das JSON-Objekt in meine "getData" -Funktion übergeben.Uncaught Reference Error mit JSONP

Ich habe den Datentyp, Skripttyp, mit der Callback-Funktion fiedled ohne Erfolg überprüft. Ich habe versucht, den zurückgegebenen Wert zu analysieren, falls sein Textformat vorhanden ist. Beim Überprüfen des Elements verweist der Fehler auf das 'getData' im JSON-Objekt.

Ich habe das Skript unten hart codiert.

<html> 
    <head> 
    <script type='text/javascript' src="https://api.icndb.com/jokes/random?callback=getData"></script> 
    </head> 

Returned JSON:

(function() { getData({ "type": "success", "value": { "id": 246, "joke": "Chuck Norris? sperm is so badass, he had sex with Nicole Kidman, and 7 months later she prematurely gave birth to a Ford Excursion.", "categories": [] } }); })(); 

JS:

function getData(data) { 
    console.log(data); 
    } 
+4

Was ist Ihre Frage? Der Fehler scheint mir ziemlich klar zu sein: Im Moment wird das Skript ausgewertet, 'getData' ist nicht definiert. Stellen Sie sicher, dass Sie "getData" definieren, bevor Sie das andere Skript hinzufügen. –

+0

* "Der Fehler verweist mich auf die 'getData' im JSON-Objekt" * Um klar zu sein: Die Antwort ist nicht JSON. Es ist JavaScript-Code. Verpasse den Namen "JSONP", es hat nichts mit JSON zu tun. Sie fügen nur ein externes JavaScript-Skript ein (das dynamisch generiert wird). –

+0

Danke, Felix. Sollte ich den Callback nicht verwenden, um auf Daten in meiner getData-Funktion zuzugreifen? –

Antwort

1

Die HTML in Ihrer Frage hat nur ein <script> Element (das JSONP Programm zu laden).

Während Sie das JS zum Definieren von getData gezeigt haben, haben Sie nicht in Ihren HTML-Code geladen (und Sie müssen dazu ein anderes <script>-Element verwenden), bevor Sie das von ihm abhängige JSONP-Programm laden).

<html> 
 

 
<head> 
 
    <script> 
 
    function getData(data) { 
 
     console.log(data); 
 
    } 
 
    </script> 
 
    <script type='text/javascript' src="https://api.icndb.com/jokes/random?callback=getData"></script> 
 
</head>

Verwandte Themen