2016-12-04 29 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>

相关问题