2016-12-04 3 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이 아닙니다. 자바 스크립트 코드입니다. Depsite 이름 "JSONP", JSON과 아무 관련이 없습니다. 외부 JavaScript 스크립트 (동적으로 생성 된) 만 포함하면됩니다. –

+0

고마워, 펠릭스. 콜백을 사용하면 getData 함수의 데이터에 액세스 할 수 있습니까? –

답변

1

html로 귀하의 질문에 단 하나 개의 <script> 요소를합니다 (JSONP 프로그램을로드하기 위해)이있다.

JS를 표시하여 getData을 정의했지만 HTML에로드하지 않았으므로 다른 <script> 요소를 사용하여 HTML에로드하지 않은 상태에서 JSONP 프로그램을로드해야합니다.

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

관련 문제