2012-11-26 5 views
2

Google의 Suggest API에서 데이터를 가져와 (아마도 추가 기능을 통해) 페이지에 표시하고 싶습니다. JSON은 파싱하는 것이지만 XML은 파싱하지 않는다는 것을 확신하며 Google에서 JSON에서이 API를 제공하지 않는다는 것을 알 수 있습니다.jQuery로 XML 데이터 읽기

어떻게하면됩니까? 아니면 JSON에서이 API에 액세스하는 방법을 아는 사람이 있습니까? 누구든지 그렇게된다면 멋지다!

이 API 주소 :

 $.ajax({ 
      type: "GET", 
      url: "http://google.com/complete/search?q=google&output=toolbar", 
      dataType: "xml", 
      crossDomain: true, 
      xhrFields: { withCredentials: true }, 
      success: function(xml) { 
       $(xml).find('toplevel').each(function(){ 
        var title = $(this).find('suggestion').text(); 
        $('<b>'+title+'</b>').appendTo('#page-wrap'); 
       }); 
      } 
     }); 

내가 점점 오전 오류는 다음과 같습니다 : http://google.com/complete/search?q=google&output=toolbar

나의 현재 코드는 XMLHttpRequest cannot load http://google.com/complete/search?q=wixiy&output=toolbar. Origin is not allowed by Access-Control-Allow-Origin.

+2

XML 문서의 데이터를 DOM에서와 같이'.find()'할 수 있습니다. – Blazemonger

답변

0

를 사용할 수있다 태만. 따라서 PHP 파일과 같은 중간 서버 측 페이지가 필요합니다.이 페이지는 google에서 xml 요청을 보내 xml을 전달합니다.

자바 스크립트

$.ajax({ 
    type: "GET", 
    url: "getData.php?q=google&output=toolbar", 
    dataType: "xml", 
    success: function(xml){ 
     $(xml).find("CompleteSuggestion").each(function(){ 
      var suggestion = $(this).find('suggestion').attr('data'); 
      var num_queries = $(this).find('num_queries').attr('int'); 
      alert(suggestion + ' has ' + num_queries + ' queries.'); 
     }); 
    } 
}); 

PHP (getData.php) -이 파일은, 같은 서버에 다른

$query = $_GET[ 'q' ]; 
$out = $_GET[ 'output' ]; 

header('Content-Type: text/xml'); 
echo file_get_contents('http://google.com/complete/search?q='.$query.'&output='.$out); 

... 또는 당신은 json_encode에게 직접 할 수 및 전송 JSON을 스크립트에 추가하면 쉽게 파싱 할 수 있습니다.

희망이 도움이됩니다.

+0

이 솔루션은 상당히 느리지 않습니까? – user14377

+0

나는 그렇게 생각하지 않지만 확실히 말할 수는 없다. 당신은 당신의 환경에서 그것을 테스트하고 스스로 결정하십시오. 내 m/c에서 잘 작동합니다. –

1

물론이지, jQuery를 CAN 구문 분석 XML. the $.ajax docs page 체크 아웃 - 그것은

컨버터 dataType와 - 투 - dataType와 컨버터의지도 (1.5 추가) 말한다. 각 변환기의 값은 변환 된 응답 값을 반환하는 함수입니다.

그래서 아약스 호출은 해당 설정을 설정해야합니다. API가 JSON을 지원하지 않습니다, 때문에 그냥 자바 스크립트에서 할 수 있도록 그것은 의한 크로스 도메인 요청을 허용하지 않으므로

$.ajax({ url: "apiUrl", converters: "text xml" }); 
+0

이전에 시도했지만 디버깅 콘솔에서 오류가 발생합니다. 어떤 아이디어? – user14377

+0

흠 ... 확실히하지 말아야 할 것은 : D 글쎄, $ .ajax()와 오류 자체에 대한 전체 호출을 게시 할 수 있습니까? – Ash

+2

아마도 일반적인 사이트 간 AJAX 오류 일 것입니다. – Blazemonger