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 (...)
 

좋은 웹페이지 즐겨찾기