$.ajax({
async:false,
url: '', // 교차 도메인 URL
type: 'GET',
dataType: 'jsonp',
jsonp: 'jsoncallback', //기본 콜백
data: mydata, // Request data
timeout: 5000,
beforeSend: function(){ //jsonp 메서드가 트리거되지 않는 이유는 dataType이 jsonp로 지정된 경우 더 이상 ajax 이벤트가 아니기 때문일 수 있습니다.
},
success: function (json) { //클라이언트 측에서 jquery가 미리 정의한 콜백 함수입니다. 크로스 도메인 서버에서 json 데이터를 성공적으로 얻은 후 이 콜백 함수가 동적으로 실행됩니다.
if(json.actionErrors.length!= 0){
alert(json.actionErrors);
}
},
complete: function(XMLHttpRequest, textStatus){
},
error: function(xhr){
//Jsonp 모드에서 이 메서드가 트리거되지 않습니다
//오류 처리 요청
alert("요청 오류(상관 네트워크 상태를 확인하세요) .)");
}
});
$.getJSON(url "?callback=?",
function(json){
})
이 메서드는 실제로 위의 예입니다. $.ajax({..})에 대한 상위 수준 래퍼입니다.
서버 측에서 콜백 매개변수(예: jsonp*****)를 가져와서 jQuery 측에서 후속 콜백을 가져오고
다음과 같은 것을 반환합니다. "jsonp**** *(" 반환될 json 배열 ")";
jquery는 콜백 메서드를 통해 이를 동적으로 로드하고 호출합니다: jsonp*****(json array);
이것은 도메인 간 목적을 달성합니다.
JSONP는 일종의 스크립트 삽입(ScriptInjection) 동작이므로 보안상의 위험도 있습니다.
참고: jquey는 도메인 간 게시를 지원하지 않습니다.
참고자료:
http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/