jsonp 및 ajax를 사용하여 다른 서버의 java로 작성된 웹 서비스를 쿼리하고 있습니다. 다음 jquery 명령을 사용하고 있습니다 :jQuery, ajax 및 jsonp에 문제가있는 경우
$.ajax({
type: "GET",
url: wsUrl,
data: {},
dataType: "jsonp",
complete: sites_return,
crossDomain: true,
jsonpCallback: "sites_return"
});
function jsonp_callback(data) {
console.log(data);
}
function sites_return(data) {
console.log(data);
}
내 문제는 쿼리가 끝난 후 jsonp_callback이라는 함수가 호출된다는 것입니다. 나는 명확하게 JSON 형식의 문자열을 볼 수있는 곳 :
이Object { readyState=4, status=200, statusText="parsererror"}
또한 참조를 위해 jsonp_callback 기능은 다음과 같습니다
{"listEntries":["ELEM1", "ELEM2", "ELEM3", etc...]}
그러나 함수 sites_return를 호출 한 후
는 전체 이벤트가 발생, 나는이 다음에 도착하면 sites_return 함수 전에 호출됩니다. 또한 jsonp_callback 함수를 코드 밖으로 가져온다면 함수가 구현되지 않았다는 불만을.니다.내 질문 세배 : 1) 내가 jquery 측에서 잘못하고 있습니까? 2) jsonp는 jsonp_callback에서 올바르게 구문 분석되지만 sites_return에서는 올바르게 구문 분석되지 않는 이유는 무엇입니까? 3) 이러한 문제를 해결하려면 어떻게해야합니까?
일부 새로운 개발 EDIT. 의견에 따라 몇 가지 추가 정보가 있습니다.
다음은 내가이 호출되는 이유 jsonp_callback 가정 HTTP 응답
jsonp_callback({"listEntries":["ELEM1", "ELEM2", "ELEM3"]})
에서 나오는 것입니다. 나는 내 질문에 지금,이 방법을 제어 할 수있는 방법이 될 것 같아요 (백엔드 웹 서비스에 대한 액세스 권한이 없다고 가정).
나는 우리가 필요 해요 생각을 모든 JSON을 확인하십시오. 구문 분석 오류의 원인이 될 수있는 잘못된 것이 있기 때문입니다. – Pointy
또한 "jsonp_callback"함수가 왜 호출되는지는 명확하지 않습니다. – Pointy
그것이 모두 json입니다. 실제 요소를 더미 이름으로 바꿨지 만 형식은 정확히 동일합니다 (물론 등등 ...). 다음은 HTTP 헤더의 응답으로 되돌아 오는 것입니다. jsonp_callback ({ "listEntries": [ "ELEM1", "ELEM2", "ELEM3"]}). 그것을 보면, http 헤더에 형식이 지정되어 있기 때문에 함수가 호출되고 있다고 가정합니다. – sumone4life