ajax 크로스 도 메 인 요청 문제 해결 방안

2770 단어 AJAX 크로스 필드
어제 프로젝트 에서 원 격 데 이 터 를 불 러 오고 페이지 를 렌 더 링 해 야 했 습 니 다. 로 컬 테스트, 원 격 방문, 데이터 가 없 었 습 니 다. FF 의 Response 는 영원히 비어 있 었 습 니 다. 고민 이 많 았 습 니 다. 그래서 모든 것 을 내 려 놓 고 인터넷 에서 자 료 를 찾 아 문 서 를 찾 았 습 니 다. Jquery 의 문 서 는 저 에 게 나무 가 있다 는 것 을 들 켰 습 니 다.있 겠 지.저녁 이 되 어서 야 ajax 크로스 도 메 인 요청 문 제 를 어렴풋이 깨 닫 고 Jquery 문 서 를 살 펴 보 았 습 니 다. 그 중에서 ajax 크로스 도 메 인 요청 의 해결 방식 이 언급 되 었 습 니 다. jsonp 가 제 눈앞 에 나타 나 자마자 Jquery 의 API 를 꺼 내 연 구 를 한 결과 JQuery 는 Ajax 의 크로스 도 메 인 요청 에 대해 두 가지 해결 방안 이 있 지만 모두 get 방식 만 지원 하 는 것 을 발 견 했 습 니 다.각각 JQuery 의 jquery. ajax jsonp 형식 과 jquery. getScript 방식 입 니 다.
 
API 원문 (따 기): 가 져 온 데이터 파일 이 원 격 서버 에 저장 되 어 있 으 면 jsonp 형식 을 사용 해 야 합 니 다.이 형식 을 사용 하면 검색 문자열 인자 callback =?,이 매개 변 수 는 요청 한 URL 뒤에 추 가 됩 니 다.서버 쪽 에 서 는 JSON 데이터 앞 에 리 셋 함수 이름 을 추가 하여 효과 적 인 JSONP 요청 을 완성 해 야 합 니 다.원 격 서버 에서 되 돌아 오 는 데 이 터 를 처리 해 야 한 다 는 뜻 입 니 다. 클 라 이언 트 가 제출 한 callback 의 매개 변수 에 따라 callback (json) 의 데 이 터 를 되 돌려 주 고 클 라 이언 트 는 script 방식 으로 데 이 터 를 처리 하여 json 데 이 터 를 처리 합 니 다. 
클 라 이언 트 의 작은 예제:
<script type="text/javascript">
$.ajax({
    type : "get",
    async:false,
    url : "http://chinese.tradingfloor.com/index.php/cycling/",
    dataType : "jsonp",
    jsonp: "callback_param",//       callback   function    
    jsonpCallback:"callback_handler",//callback function     
    success : function(data){
                   var str = '';
                   $.each(data, function(key, val) {
                        var race_date= val['race_date'] == null?'':val['race_date'];
                        var road = val['road'] == null?'   ':val['road'];
                        var dis = val['distination']== null?'':val['distination']+'km';
                        var name = val['champion_name'] == null ? '':val['champion_name'];
                        if(val!=null){
                                str += "<tr><td>"+race_date+
                                "</td><td>"+road+
                                "</td><td>"+dis+
                                "</td><td>"+name+
                                "</td></tr>";    
                        }
                    });    
            races.append(str);
    },
    error:function(readyState,statusText,throwable){
            alert(readyState);
            alert(statusText);
            alert(throwable);
    }
});
</script>

좋은 웹페이지 즐겨찾기