Ajax 크로스 도 메 인 에서 XML 데 이 터 를 방문 하 는 또 다른 방식 - YQL 검색 어 를 사용 합 니 다.

3093 단어 AJAX 크로스 필드
XML 데 이 터 는 기본적으로 클 라 이언 트 가 Ajax 크로스 도 메 인 을 통 해 읽 을 수 없습니다. 일반적인 방법 은 서버 에 간단 한 프 록 시 를 쓰 고 원 격 XML 데 이 터 를 로 컬 서버 에 먼저 읽 은 다음 클 라 이언 트 가 로 컬 서버 에서 Ajax 를 통 해 요청 하 는 것 입 니 다.데이터 원본 이 있 는 환경 에 대해 어떠한 설정 과 수정 도 할 수 없 기 때문에 클 라 이언 트 코드 만 으로 는 이 문 제 를 피하 기 어렵다.그러나 요청 한 데이터 가 XML 이 아 닌 JSON 대상 이나 JavaScript 함수 라면 JSONP 방법 으로 쉽게 해결 할 수 있 으 며, JQuery. getJSON () 방법 을 직접 호출 하여 리 셋 함수 에서 되 돌아 오 는 결 과 를 얻 을 수 있 습 니 다.JSONP 를 사용 하려 면 지정 한 URL 뒤에 조회 인자 '& amp; callback =?' 를 추가 할 수 있 습 니 다.
$(document).ready(function() {
  $.getJSON("http://www.example.com/getdata", function(data) {
  console.log(data);
 })
});
$(document).ready(function() {
  $.getJSON("http://www.example.com/getdata2?callback=?", function(data) {
  console.log(data);
 })
});

그 밖 에 저 희 는 제3자 플랫폼 에서 제공 하 는 API 를 통 해 데 이 터 를 방문 할 수 있 습 니 다.YQLYahoo! 제공 하 는 웹 서비스 서비스 로 SQL 구문 처럼 인터넷 의 모든 데 이 터 를 방문 할 수 있 으 며 도 메 인 을 뛰 어 넘 는 문제 가 존재 하지 않 습 니 다.
//sample site that returns xml
var site = 'http://feed.cnblogs.com/blog/u/53608/rss';


var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + site + '"') + '&format=xml&callback=?';

// Request that YSQL string, and run a callback function.
// Pass a defined function to prevent cache-busting.
$.getJSON(yql, function (data) {
    console.log(data.results[0]);
});

YQL API 의 공공 접근 제한 은 같은 IP 시간 당 2 천 개 요청 으로 홈 페이지 안내 https://developer.yahoo.com/yql/guide/usage_info_limits.html 를 볼 수 있다.
그러나 개인 적 으로 이런 방법 은 임시 적 인 해결 방안 일 뿐 이 라 고 생각한다. 완전한 웹 응용 에 있어 제3자 시스템 에 지나치게 의존 하면 시스템 의 안정성 과 확장 성 을 직접적 으로 초래 하고 비교적 큰 위험 이 있 을 것 이다.Yahoo! 웹 서비스의 인 터 페 이 스 를 수정 하거나 YQL 의 공공 접근 을 중단 하면 시스템 의 모든 YQL 에 의존 하 는 부분 에 문제 가 생 길 수 있다 고 생각해 보 세 요.

좋은 웹페이지 즐겨찾기