2016-08-04 3 views
-1

JSONP를 사용하여 교차 도메인 AJAX 요청을 호출합니다. 이제는 CORS를 사용하여 작동하도록 할 수 있습니다. 하지만, 왜 JSONP가 발생하지 않는지 알고 싶습니다. 비슷한 문제가있는 다른 스레드를 보았지만 내 경우에는 작동하지 않는 이유를 알지 못했습니다. 여기 유효한 JSON 출력 JSONP 구문 분석 오류

코드입니다 : 데이터가 채워집니다 지금
$.ajax({ 
     type: "GET", 
     url: http://XXXX:8000/sap/bc/test_rest/jsonp_test?mode=S&ticket=123, 
     dataType: "jsonp", 
     jsonp: false, 
     jsonpCallback: "myJsonMethod", 
     success: function (data) { 
      alert(data); 
     }, 
     error: function (httpReq, status, exception) { 
      alert(status + " " + exception); 
     } 
    }); 

, 이것은 내 서버를 호출하고 난 경고 콜백 URL에 " 구문 분석 오류 myJSONMethod가 호출되지 않은"얻을 http://xxxx:8000/sap/bc/test_rest/jsonp_test?mode=S&ticket=123&_=1470322282936

예기치 토큰 :

또한 콘솔 난 구문 에러로 처리되지 않는 오류 응답 구조는 :

{"ROOT":{"CONTRACT":"40002356","ITEM":"000010","KUNNR":"0000004676","NAME":"REALTY EXECUTIVES","NET_PRICE":19.95,"GROSS_PRICE":19.95,"MATNR":"144","SQFEET":""}} 

jsonlint에서이 JSON 출력을 실행할 때 올바른 JSON이라고 표시됩니다. JSON이 어디서 엉망이되는지 모르겠습니다.

+0

같은 잘못을 던질 것인가? – Venky

+1

당신은 myJsonMethod (... yourSShere ...)에서 json을 래핑해야합니다. 즉, JSONP – Maxx

+0

유효한 JSON은 유효한 JSONP와 다른 것은 아닙니다. 이것이 문제입니다. JSON을 JSONP API처럼 반환하는 API를 사용하려고 시도하고 있습니다. 간단히 작동하지 않습니다. – Pointy

답변

1

귀하의 데이터는 JSONP를 위해 유효한 것으로 다음과 같이해야합니다 :

myJsonMethod({"ROOT":{"CONTRACT":"40002356","ITEM":"000010","KUNNR":"0000004676","NAME":"REALTY EXECUTIVES","NET_PRICE":19.95,"GROSS_PRICE":19.95,"MATNR":"144","SQFEET":""}}); 
+0

대단히 감사합니다. 서버 측에서 수동으로 포장해야만 완벽하게 작동했습니다. –

1

에서 responseText는 JS 유효한 코드해야하고 코드를 작성하는 경우 응답이 over.So 때 즉시 실행됩니다

{"ROOT":{"CONTRACT":"40002356","ITEM":"000010","KUNNR":"0000004676","NAME":"REALTY EXECUTIVES","NET_PRICE":19.95,"GROSS_PRICE":19.95,"MATNR":"144","SQFEET":""}}

<script> 태그에 콘솔을 사용하면`myJsonMethod` 코드를 공유 할 수

+0

맞습니다. 이제 나는 그 요지를 얻었다. 감사!! –