JSONP 요청 반환 오류: "Uncaught SyntaxError:예기치 않은 토큰 :"
그래서 다음과 같은 jQuery 코드로 Stack Exchange API에 요청하려고 합니다.
$.ajax({
type: 'POST',
url: 'http://api.stackoverflow.com/1.1/stats',
dataType: 'jsonp',
success: function() { console.log('Success!'); },
error: function() { console.log('Uh Oh!'); }
});
그러나 FireFox 또는 Chrome 컴퓨터에서 파일을 열고 요청을 하면 다음 오류가 발생합니다.
Resource interpreted as Script but transferred with MIME type application/json.
Uncaught SyntaxError: Unexpected token :
Uh Oh!
무슨 일인지 전혀 모르겠어요.Stack Exchange API Gzips의 응답을 알고 있는데, 문제가 발생할까요?
SO API가 작동하려면 파격적인 매개 변수를 설정해야 합니다.일반적인 것보다.callback
당신은 a를 통과해야 합니다.jsonp
매개 변수
게다가, 당신은 할 수 없습니다.POST
JSONP와 함께.
$.ajax({
type: 'GET',
url: 'http://api.stackoverflow.com/1.1/stats',
dataType: 'jsonp',
success: function() { console.log('Success!'); },
error: function() { console.log('Uh Oh!'); },
jsonp: 'jsonp'
});
기존 XMLHTTPRequest를 사용하여 도메인 간 AJAX를 수행할 수 없습니다.이는 보안상의 이유(같은 출처 정책이라고 함) 때문입니다.
해결 방법이 있습니다.script
태그는 이 제한 사항이 적용되지 않습니다.즉, 다음을 삽입할 수 있습니다.script
URL을 호출하는 문서에 태그를 지정합니다.스크립트에서 전역적으로 액세스할 수 있는 함수를 정의하고 원격 서버에 해당 함수의 이름을 알려주면 서버는 호출로 전송할 데이터를 래핑하는 코드를 해당 함수에 전달할 수 있습니다.
StackOverflow API에 문제가 있었습니다.일반적으로, 당신은 다음을 사용할 것입니다.callback
서버에 사용자의 함수를 호출하는 인수입니다.그러나 StackOverflow의 API는 다음을 사용하도록 요청합니다.jsonp
매개 변수 대신 사용합니다.
다음 URL을 사용해 보십시오. http://api.stackoverflow.com/1.1/stats?jsonp=callme
"call me"는 글로벌 네임스페이스(창 개체)에 있는 콜백 함수의 이름입니다.
참고로 Firefox를 실행 중이고 JSONView 추가 기능이 설치되어 있다면 위의 URL(및 비교를 위해 사용자의 URL)을 직접 테스트할 수 있습니다.
URL을 호출한 결과:
callme({
"statistics": [
...
]
})
언급URL : https://stackoverflow.com/questions/6046008/jsonp-request-returning-error-uncaught-syntaxerror-unexpected-token
'source' 카테고리의 다른 글
jQuery를 사용한 바로 가기 키 (0) | 2023.08.07 |
---|---|
j선택기에 특정 클래스가 있는 요소 제외 쿼리 (0) | 2023.08.07 |
Git repo의 하위 디렉터리만 Heroku에 배포/푸시하려면 어떻게 해야 합니까? (0) | 2023.08.07 |
ES6 템플릿 리터럴을 런타임에 대체(또는 재사용)할 수 있습니까? (0) | 2023.08.07 |
시간에 대해 NULL을 삽입합니다.JSON에서 디코딩된 시간 (0) | 2023.08.07 |