2016-12-04 10 views
-1

JSONオブジェクトを 'getData'関数に渡すときに「Uncaught ReferenceError:getDataが定義されていません」というエラーが表示されます。JSONPを使用してキャッチされていない参照エラー

コールバック関数を使用しないで、データ型、スクリプトの種類を検討しました。私はテキスト形式の場合に返された値を解析しようとしました。要素を調べると、JSONオブジェクトのgetDataにエラーが表示されます。

以下のスクリプトをハードコードしました。

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

は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

あなたの質問は何ですか?エラーは私にははっきりしているようです:スクリプトが評価される瞬間、 'getData'は定義されていません。他のスクリプトをインクルードする前に必ず 'getData'を定義してください。 –

+0

* "JSONオブジェクトのgetDataにエラーが表示される" *明確にする:応答はJSONではありません。 JavaScriptコードです。 Depsiteには "JSONP"という名前が付いていますが、JSONとは関係ありません。あなたは、(動的に生成された)外部JavaScriptスクリプトを含むだけです。 –

+0

ありがとう、フェリックス。コールバックを使用してgetData関数内のデータにアクセスできないようにする必要がありますか?もちろん、 –

答えて

1

あなたの質問でHTMLのみ(JSONPプログラムをロードする)1つの<script>の要素を持っています。

JSを指定してgetDataを定義している間は、HTMLにロードしていないため、別の<script>要素を使用してHTMLにロードする必要はありません。

<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>

関連する問題