Jquery 의 크로스 필드 호출
Ajax 의 응용 프로그램 에서 보안 문제 로 인해 브 라 우 저 는 기본적으로 크로스 도 메 인 호출 을 지원 하지 않 습 니 다.전통 적 인 해결 방법 은 다음 과 같다.http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/)
Local proxy:
Needs infrastructure (can't run a serverless client) and you get double-taxed on bandwidth and latency (remote - proxy - client).
Flash:
Remote host needs to deploy a crossdomain.xml file, Flash is relatively proprietary and opaque to use, requires learning a one-off moving target programming langage.
Script tag:
Difficult to know when the content is available, no standard methodology, can be considered a "security risk".
이상 의 방법 은 모두 각자 결함 이 있어 서 해결 방안 이 그리 많 지 않다.나중에 JSON with Padding 이라는 기술 이 나 왔 는데 JSONP 라 고 부른다.http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/) JSONP 를 사용 하면 JSON 데이터 의 크로스 도 메 인 호출 을 실현 할 수 있 습 니 다.다행히 JQuery 1.2 이후 JSONP 애플 리 케 이 션 을 지원 합 니 다.다음은 JQuery 에서 Json 의 크로스 도 메 인 호출 에 중심 을 두 고 설명 합 니 다.
JSONP 를 사용 하여 JSon 데이터 크로스 도 메 인 호출 을 실현 하려 면 서버 측 과 클 라 이언 트 의 합작 이 필요 합 니 다.Jquery 공식 예 를 참조 하여 클 라 이언 트 는 다음 과 같이 사용 합 니 다.
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
여기 서 호출 된 주소 중 jsoncallback =?관건 이 야!그 중에서 기 호 는 Query 에 의 해 자동 으로 다른 반전 방법의 이름 으로 바 뀌 고 구체 적 인 과정 과 원 리 는 우리 가 여기 서 무시 합 니 다.저희 가 관심 있 는 건 제 이 슨 콜 백 =?무슨 역할 을 했 습 니까?원래 jsoncallback =?바 뀌 면 방법 이름 을 서버 에 전달 합 니 다.우 리 는 서버 에서 어떤 일 을 해 야 합 니까?서버 는 인자 jsoncallback 을 받 아들 이 고 jsoncallback 의 값 을 JSON 데이터 방법 이름 으로 되 돌려 야 합 니 다. 예 를 들 어 서버 가 JSP 입 니 다. 우 리 는 이렇게 할 것 입 니 다.
...
String jsoncallback=request.getParameter("jsoncallback");
...
out.print(jsoncallback+"({\"account\":\"XX\",\"passed\":\"true\",\"error\":\"null\"})");
Jquery 에서 얻 은 데 이 터 는 다음 과 같 을 수 있 습 니 다.
JQUET0988788({"account":"XX","passed":"true","error":"null"})
결론 적 으로 JSONP 로 두 가지 일 을 해 야 합 니 다.
1 / 요청 주소 에 인자 추가: jsoncallback =?
2 / 서버 세그먼트 에서 jsoncallback 의 값 을 방법 명 으로 전송 합 니 다. 예 를 들 어 JQUET 098788 (...)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[*기타*] 앱에서 외부 데이터 검색(JSONP편)앱에서 외부 서버의 데이터를 취하고 싶은 경우의 JSONP편. 일반적으로 다른 도메인에 대해 Ajax 통신을 시도하면 화가납니다. 이것을 크로스 도메인 제약이라고 한다. 그래도 외부 서버의 데이터를 가져오는 것이 필...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.