AJAX 호출 및 클린 JSON이지만 구문 오류: missing; before 문
다음 코드를 사용하여 크로스 도메인 JSONP 콜을 발신합니다.
jQuery.ajax({
async: true,
url: 'http://mnews.hostoi.com/test.json',
dataType: 'jsonp',
method: "GET",
error: function (jqXHR, textStatus, errorThrown) {
console.log(textStatus + ': ' + errorThrown);
},
success: function (data, textStatus, jqXHR) {
if (data.Error || data.Response) {
exists = 0;
}
}
});
Firebug에서 디버깅할 때 다음 오류가 발생합니다.
SyntaxError: missing ; before statement
단, json 객체(JQ 코드의 링크를 통해 사용 가능)를 jsonlint.com 등의 툴을 통해 전달하면 유효한 JSON이라고 표시됩니다.그리고 이상 징후도 발견하지 못했습니다어떻게 구문 오류를 반환할 수 있습니까?JSONP의 상세 내용을 알 수 없는 건가요?
JSON 샘플
{"news":[ {
"sentences": [
"Neuroscientists have discovered abnormal neural activity...",
"The researchers found that these mice showed many symptoms...",
"\"Therefore,\" the study authors say, \"our findings provide a novel.."
],
"summaryId": "ZJEmY5",
"title": "Abnormal neural activity linked to schizophrenia"
}]}
잘 부탁드립니다.
JSONP는 JSON이 아닙니다. JSONP 응답은 하나의 인수(JSON 구문을 준수하는 JavaScript 객체 리터럴)를 가진 함수 호출만 포함하는 JavaScript 스크립트로 구성됩니다.
응답은 JSONP가 아닌 JSON이므로 JSONP로 처리하려고 하면 실패합니다.
바꾸다dataType: 'jsonp'
로.dataType: 'json'
(혹은 행 전체를 삭제하면 서버가 올바른 콘텐츠유형을 발행하므로 덮어쓸 필요가 없습니다).
스크립트는 JSON과는 다른 오리진에서 실행되므로 JSON을 제공하는 호스트를 제어해야 하는 절차(전부는 아니지만 대부분)도 수행해야 합니다.
이 에러는 JSONP가 아닌 JSON을 반환하고 있기 때문입니다.
원래 JSONP는
someCallBackString({ The Object });
다음은 작업 예시입니다.
$.ajax({
type: 'GET',
url: 'http://xxx.amazonaws.com/file.json',
dataType: 'jsonp',
jsonpCallback: 'callback',
success: function(json){
console.log(json);
}
});
그리고 넌 이걸callback
의 초기에file.json
예를 들어 다음과 같습니다.
callback({"item":{".......
epascarello가 지적한 바와 같이 JSONP 응답은 다음과 같이 전송되어야 합니다.
callBackFunction({ JSON Object })
그 후, 다음과 같이 발신자 기능을 설정할 수 있습니다.
var url = "http://someremoteurl.com/json";
$.getJSON(url + "?callback=?", null, function(data) {
callBackFunction(data);
});
그런 다음 다음과 같이 응답 데이터를 루프할 수 있습니다.
function callBackFunction(data)
{
console.log(data);
}
"callback=?" 매개 변수를 사용하는 경우 서버 측의 응답은 다음과 같습니다.
$_callback = $_GET['callback'];
echo $_callback . '(' . json_encode(YOUR_VARIABLE) . ');';
"callback=?" 매개 변수가 정의되지 않은 경우 응답은 다음과 같습니다.
echo '[' . json_encode($_return_array) . ']';
질문이 Ruby와 관련된 경우 컨트롤러에서 포맷을 올바르게 렌더링했는지 확인합니다.예:
def view_product
data = Product.find params[:id]
render :json => data, :callback => params[:callback]
end
렌더 방식에서는 :callback 파라미터를 지정해야 합니다.그렇지 않으면 jsonp 대신 json으로 렌더링됩니다.
언급URL : https://stackoverflow.com/questions/19456146/ajax-call-and-clean-json-but-syntax-error-missing-before-statement
'programing' 카테고리의 다른 글
동위원소 - 각 범주 내 최신 게시물 표시 (0) | 2023.04.01 |
---|---|
이걸 쓰면 어떻게 되는 거야?react 구성 요소에서 setState를 여러 번 사용하시겠습니까? (0) | 2023.04.01 |
angular-ui-router 해상도 오류 처리 방법 (0) | 2023.04.01 |
커스텀 프런트 엔드 폼을 사용한Woocommerce 제품 태그 및 카테고리 설정 (0) | 2023.04.01 |
키에 콜론이 있는 JSON 개체 선택 (0) | 2023.04.01 |