2016-12-04 32 views
-1

當我使用將JSON對象傳遞給我的'getData'函數時,收到錯誤:「未捕獲的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在你的問題只有一個<script>元素(加載JSONP程序)。

雖然您已經顯示JS來定義getData,但在加載依賴於它的JSONP程序之前,您尚未加載到HTML中(並且您需要這樣做,使用另一個<script>元素)。

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

相關問題